面向对象7

多态

实际运行的数据类型和赋值时的数据类型不一致;
定义时的类型和实际的数据类型不一致;
编译阶段和运行阶段的数据类型不同;

运行时多态:

超类的对象可以引用子类的实例;向上转型
该对象仍然只能调用超类中定义的方法和变量;
对于覆盖或继承的方法,Java运行时系统根据调用该方法的实例的类型来决定选择那个方法调用

操作流程:
1.继承;2.方法重写;3.父类对象引用子类实例;

注意事项

当超类的对象是子类实例的引用时,这个对象所访问的成员 必须是超类中所具有的,因为在编译过程中数据类型还是超类,如果超类中无子类的成员,在编译时是找不到的,当编译完开始运行时,对象才是子类;

这个对象不能访问子类自己创建的成员;

当这个对象访问的是被覆盖的方法,则调用的是子类中覆盖方法;

只有这个对象被强制转化成子类类型时,这个子类的的所有成员才有可能被访问;

instanceof关键字:判断某个对象是否属于某个类;

属于同一个父类的子类相互之间称作兄弟类;兄弟类不能强制转化,并且一般不会把父类强之转化为子类;

总结

前提:
需要存在继承或者实现关系;
要有覆盖操作;
成员方法:
编译时,要查看引用变量所属类中是否由所调用的方法;
运行时,调用实际对象所属类中的重写方法;
成员变量:
不具有多态性,只看引用变量所属类;

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值