面向对象三大特性:封装,继承,多态
extends继承或者implements实现,是多态的前提。
一、在多态中,成员变量以及成员方法的使用
定义一Fu类,类中有成员变量num=10;成员方法method()和methodFu()
定义一Zi类 Z类继承Fu类 ,类中有跟父类成员变量相同的num=20;成员方法名相同的method()和特有的方法methodZi();
定义一测试类,使用多态方法 在编译obj.methodZi()时报错。
结果为
从结果中可以看出输出同样成员变量num值,结果是10;同样成员方法,结果是20;而且编译不了子类特有的成员方法。
所以:在访问成员变量时:看等号左边是谁就优先用谁,没有则往上找
在访问成员方法时:编译看左,运行看右 (编译时要看左边有没有该方法,如果只有子类有,则访问不到)
二、对象的转型
a.向上转型:向上转型其实就是使用多态方法,把小的范围转换为大的范围
b.向下转型:使用多态方法时,往往子类特有的方法不能被实现。所以在这时需要进行向下转型【还原】。
格式:子类名称 对象名 = (子类名称) 父类对象
例:
三、Instanceof关键字
在有多个子类并且子类都有特有的方法时,需要用Instanceof关键字进行判断。
例:
格式:对象 Instanceof 类名称
这将会得到一个boolean值,就是判断前面的对象能不能做后面类型的实例