java多态

  • 多态的概念

同一个对象,在不同时刻表现出的不同形态。(系统自动识别当前对象的类型,并访问其对应的属性或方法)

多态性体现在方法重载所实现的静态多态性(编译时多态)和方法覆盖所实现的动态多态性(运行时多态)。

例如:猫

可以说猫是动物: Animal c = new Cat();

可以说猫是猫: Cat c = new Cat();

也可以说猫是液体: Liquid c = new Cat();

此时猫在不同时刻表现出了不同的形态,这就是多态。

  • 多态存在的必要条件(前提)
  1. 继承:当一个类具有另一个类的所有数据和方法的时候,就称这两个类之间具有继承关系。
  1. 继承关系是传递的。继承简化了人民对事物的认识和描述,能清晰体现相关类间的层次结构关系。
  2. 提供软件复用功能。能见效代码和数据的冗余度,大大增加程序的重用性。
  3. 通过增强一致性来减少模块间的接口和界面,大大增加程序的易维护性。
  4. 单一继承机制。仅支持单继承,但可实现多接口。
  1. 重写:(1)覆盖性重写:子类重写父类的方法,特点是父类中该方法的内容全部舍弃,重新重写该方法。

(2)扩展性重写:保留父类方法原有内容的基础上增加新的内容,可以在子类中使用super调用父类方法。

  1. 父类引用指向子类对象 parent p = new child();

示例:

public class animal {

public void eat(){

    System.out.println(“吃东西”);

}

}

//继承

public class Cat extends Animal {

public void eat(){

//方法重写(overwrite)

    System.out.println(“猫吃鱼”); 

}

public void playFurball(){

    System.out.println(“猫玩毛球”);

}

}

public class AnimalDemo(){

public static void main(){

    //父类引用子类对象

    Animal c = new cat();

   

}

}

  • 多态的好处和弊端

好处:扩展性强,让代码更灵活,提高代码的复用性

弊端:不能调用子类对象的特有行为(方法)

示例:

//在上一个代码上进行拓展

public void useAnimal(Animal a){

    //提高代码的复用性,不用多次书写

//Animal a = new Cat();

//Animal a = new Dog();

  1. eat();

//不能调用子类对象的特有行为(方法)

//无法调用a. playFurball()

}

public class AnimalDemo{

public static void main(String[] args){

Animal a = new Animal();

Cat c = new Cat();

a.useAnimal(c);

}

}

输出:猫吃鱼

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值