多态
1.同一个方法可以根据发送对象的不同而采用多种不同的行为方式
2.一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多(父类、有关系的类)
可以通过父类去new子类
EX: Student s1 = new Student(); (子类) 能调用自己的方法、或者继承父类的方法
Person s2 = new Student(); (父类) 不能调用子类独有的方法,但是可以指向子类(new Student)
Object s3=new Student();
如果子类重写了父类的方法,s1、s2调用这个方法,会执行子类的方法。
注意事项:1.是方法的多态,属性没有
2.父类和子类 否则类型转换异常(ClassCastException)
3.存在条件: 继承关系,方法需要重写(注意不能重写的方法),父类引用指向子类对象( Father F1= new son(); )
引用类型转换 instanceof 查看X Y 是否有父子类关系
sop(X instanceof Y);
如何让父类引用类型去使用子类的方法呢?(父类转子类)
ex: 假设student中有一个名为go的方法
高 低
Person p1= new student();
Student p1= (Student)p1; /*强制转换后,就可以使用
==== ( (student)p1).go();
p1.go(); */
如果是子类转换父类,可能丢失自己本来的一些方法。