多态 Java

什么是多态
  • 生活中: 同一个动作在不同环境下表现出来的不同状态
  • Java中: 同一个方法在不同的对象中体现出来不同的状态
  • 内存中: 父类引用指向子类对象
多态实现的必要条件
  • 1.存在继承关系
  • 2.存在方法重写
  • 3.父类引用指向子类对象
多态访问成员的特点

成员变量:

编译时期:看左边的类型,如果左边类型中没有变量,编译报错
运行时期:看左边类型,左边类型的变量的值就是运行的结果

编译看左边,执行看左边

成员方法:

编译看左边,执行看右边

构造方法:

多态访问子类构造方法会先访问父类构造方法
帮助子类初始化父类继承过来的成员

静态方法:

编译看左边,执行看左边
多态的优点和缺点

多态的优点:

1.简化了代码。
2.提高了代码的可维护性和拓展性。
3.消除类型之间的耦合关系等。

多态的缺点:

使用父类引用无法访问子类所特有的方法.

多态缺点的解决方法:向下转型

向下转型
格式:<子类型> <引用变量名> = (<子类型> )<父类型的引用变量>;
特点:父类转为子类,父类引用转为子类对象。理解为强制类型转换

在向下转型的过程中,如果没有转换为真实子类类型,会出现类型转换异常

与向下转型相对应的:向上转型

向上转型
格式:<父类型> <引用变量名> = new <子类型>();
特点:子类转为父类  父类的引用指向子类对象。理解为自动进行类型转换

此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法
此时通过父类引用变量无法调用子类特有的属性和方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值