继承与多态2

2.2 多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同 的状态。

2.3 多态实现的条件:

1. 必须在继承体系下。

2. 子类必须要对父类中方法进行重写。

3. 通过父类的引用调用重写的方法。

多态的体现:在代码运行时,当传递不同类对象时,会调用对应类中的方法。

以animal为父类:定义成员变量,构造方法,成员方法(eat).

创建子类dog ,cat:

注:这里重写了Animal的eat方法(override为重写).

test调试:

这里的a.eat(),当a引用Dog对象时,调用Dog中的eat方法。引用Cat对象时,调用Cat中的eat方法。

2.4

重写的概念:重写(override):也称为覆盖。重写是子类对父类非静态、非private修饰,非final修饰,非构造方法等的实现过程 进行重新编写, 返回值和形参都不能改变即外壳不变,核心重写!

方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。

ex1:

2.5 静态绑定与动态绑定:

静态绑定 :也称为前期绑定 ( 早绑定 ) ,即在编译时,根据用户所传递实参类型就确定了具体调用那个方法。典型代 表函数重载。
动态绑定 :也称为后期绑定 ( 晚绑定 ) ,即在编译时,不能确定方法的行为,需要等到程序运行时,才能够确定具体调用那个类的方法。
2.6 向上转型和向下转型:
向上转型:实际就是创建一个子类对象,将其当成父类对象来使用。(将子类给父类,从小范围到大范围的转变)
语法格式:父类类型 对象名 = new 子类类型();
             ex1:Animal animal = new Dog("旺财”,6);
使用场景:1.直接赋值
                   2.方法传参
public class TestAnimal {
// 2. 方法传参:形参为父类型引用,可以接收任意子类的对象
public static void eatFood(Animal a){
a.eat();
}
                    
                   3. 方法返回
 
 
向下转型: 将一个子类对象经过向上转型之后当成父类方法使用。
程序可以通过编程,但运行时抛出异常---因为:animal实际指向的是狗
// 现在要强制还原为猫,无法正常还原,运行时抛出:ClassCastException
cat = (Cat)animal;
cat.mew();
// animal本来指向的就是狗,因此将animal还原为狗也是安全的
dog = (Dog)animal;
dog.bark();

(将animal强转为cat或dog)

多态的优缺点:
优点:1.降低复杂度,避免大量使用if-else.
            2.可扩展能力强。
缺点:运行效率低下。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值