多态性的总结回顾,以及引入instanceof

对象的多态性只适用于方法,不适用于属性(编译运行都看左边).
3.多态的使用称为虚拟方法调用
子类方法重写的时候,父类称为虚拟方法,编译调用虚拟方法。

方法可以重写,属性不重写。如果父类和子类拥有同名属性,则调用改子类的时候实际有两个同名变量,可以通过this和super来区别。

1.什么是多态性

2.什么是虚拟方法调用

3.一个类可以有几个父类,一个父类可以有多少个子类,
子类能获取直接父类的父类中的结构吗,子类能否获取父类中private权限的属性或方法
(可以,写get,set方法)

重写
方法名形参列表一样,子类权限必须比父类大,父类是private子类不能继承,void void ,
父类是引用数据类 子类必须是继承类的引用数据类,父类是基本数据类,子类也是一样的基本数据类。
super
调用属性方法构造器
super调用构造器
this形参列表调用本类重载的构造器,
super形参列表调用父类重载的构造器。

instanceof

有了对象的多态性以后,内存中实际上是加载了子类特有的属性和方法,但由于变量声明为父类类型,
导致编译时,只能调用父类中声明的属性和方法。子类特有的属性和方法不能调用。

如何调用子类特有的属性和方法?
强制类型转换
Man子 m1=(Man)P2父;向下转型
强转有风险。使用强转时可能出现ClassCastException 异常

所以引入一个关键字instanceof;

问题:我强转之后还能使用父类的特有的方法吗。
可以

格式

if(A instanceof a){
	子类 B = 子类 A
}

如过上面能通过那么

if(A instanceof a的父类){
	sout"这也能通过"
}

强转一般用于不满足于父类仅有的多态性,想要使用子类特有的方法时。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值