目录

多态性

变量类型转换的类比

多态性应用场景

子类对象的属性无多态性

多态性练习


多态性

 

背景交代:Man类和Women类继承了Person类,且重写了eat和walk方法


变量类型转换的类比

 

1.9 Java复习之多态性1.9 Java复习之多态性

1.9 Java复习之多态性

1.9 Java复习之多态性

Person p1 = new Man();//向上转型

1.9 Java复习之多态性

entertainment方法为Man类独有,不满足多态性条件,不能直接

调用,p2.shopping方法同理。

向下转型为women类对象引用即可调用独有方法

1.9 Java复习之多态性

p1是Person类(实体为man类),向下转型为woman类,能通过编

译,但执行时显示类型转化异常,因为没有shopping方法(海波哥,苦啊!)


下例,直接向下转型,编译器都通不过,毕竟两类无直接关系

1.9 Java复习之多态性

注意instanceof右边是类名

p1是man类实例,所以也是其父类person类的实例,故会输出“你好”

若想通过p1执行entertainment这一子类独有方法,则需要进行判断后向下转型,不能直接调用子类独有方法


多态性应用场景

形参类型只需要设定为父类对象引用,则可传入父类及其子类的对象,可省略大量方法。

1)

1.9 Java复习之多态性

举例

1.9 Java复习之多态性

不仅可传入animal还可传入dog和cat,实际执行的方法是子类实例重写父类的方法

 

子类对象的属性无多态性

子类与父类属性同名,都会加载到内存中,不存在类似方法的重写或覆盖,所以

Animal a = new Dog();

a.id实际的是父类属性id的值,而不是子类(看左边)

1.9 Java复习之多态性

1.9 Java复习之多态性

1.9 Java复习之多态性


多态性练习

1.9 Java复习之多态性

构造器的修饰符:四选一

1.9 Java复习之多态性

1.9 Java复习之多态性

1.9 Java复习之多态性

 

1.9 Java复习之多态性

1.9 Java复习之多态性

1.9 Java复习之多态性 1.9 Java复习之多态性

注意注释部分,上半部分表示可替换,,下半部分为解释说明

相关文章:

  • 2021-08-19
  • 2021-07-16
  • 2021-10-15
  • 2022-01-08
  • 2021-08-04
  • 2021-12-09
  • 2022-01-15
猜你喜欢
  • 2021-08-03
  • 2021-04-15
  • 2021-12-01
  • 2021-09-19
  • 2021-12-05
  • 2021-12-05
  • 2021-11-16
相关资源
相似解决方案