java11-多态

多态

多态是在继承/实现情况下的一种现象,表现为:对象多态、行为多态

对象多态:

People p1 = new Student();

People p2 = new Teacher();

在这里人可以是学生对象,也可以是老师对象,这就是对象多态

行为多态:

People p1 = new Student();
p1.run();
People p2 = new Teacher();
p2.run();

编译看左边,运行看右边(看的是初始化对象等号左右边,编译时看左边people,运行时看的是右边实际) 

在这同样是调用run方法,可能老师跑得快,学生跑得慢,这就是行为多态

 多态的前提

  • 有继承/实现关系;存在父类引用子类对象;存在方法重写

多态的注意事项

  • 多态是对象,行为的多态,java中的属性(成员变量)不谈多态(即使子类中有变量也输出的是父类)

使用多态的好处

  • 在多态形式下,右边对象是解耦合的,更便于扩展和维护

例如学生寝室里面的床帘:

有的是免安装的,那支架之间就是直接连好的,这个时候如果其中一根支架杆子有问题就需要全部退货去换,因为他们是高度耦合的(“焊死的”),但是如果选择那种自己手动安装的,就是一个一个杆子,就是解耦合的

高耦合的设计,各部件之间紧密依赖。而解耦合的设计就是模块化的,每个部分互相独立,不好用了就更换,不会影响到其他部分

解耦合好处:

  1. 易维护,易扩展,易复用,灵活性

多态存在的问题:

不能直接调用子类的独有方法

多态下的类型转换问题

类型转换

  • 自动类型转换:父类 变量名 = new 子类()
  • 强制类型转换:子类 变量名 = (子类)父类变量

强制类型转换的一个注意事项

  • 存在继承/实现关系就可以在编译阶段进行强制类型转换,编译截断不会报错
  • 运行时,如果发现对象的真实类型和强转后的类型不同,会报错(类型转换异常)
  • 强制转换前,建议可以使用instanceof判断当前对象的真实类型:对象 instanceof 类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值