java学习part12多态

99-面向对象(进阶)-面向对象的特征三:多态性_哔哩哔哩_bilibili

java学习part12多态_第1张图片

1.多态(仅限方法)

父类引用指向子类对象。

调用重写的方法,就会执行子类重写的方法。

编译看引用表面类型,执行看实际变量类型。

java学习part12多态_第2张图片

2.父子同名属性是否满足多态?不满足

满足就近原则,父类引用调用一个父类子类的同名属性,默认调父类的属性。

因为引用是父类的,调用的就是父类的属性

java学习part12多态_第3张图片

java学习part12多态_第4张图片

3.为什么要多态

java学习part12多态_第5张图片

 

4.多态弊端

 不能直接调用子类里的方法和属性,编译通不过

java学习part12多态_第6张图片

5.向下转型

父类引用不能直接使用子类特有的内容,所以需要向下转型‘

java学习part12多态_第7张图片

java学习part12多态_第8张图片

instanceof有点像golang的断言

java学习part12多态_第9张图片

 向下转型和强转的用法很类似java学习part12多态_第10张图片

6.转型可能导致异常,因此需要判断instanceof

如果实际类型不一致(woman不能转man),编译没问题,但是运行出错。

java学习part12多态_第11张图片

需要判断实例类型 ,

golang的断言就类似于这里的instanceof + 强转

java学习part12多态_第12张图片

你可能感兴趣的:(java,学习)