Day22多态详解
多态是面向对象的重要特性,在java中表现为父类引用指向子类对象 Father f1 = new Son();
多态是方法的多态,与属性无关
父类与子类之间需要有联系,否则类型转换异常,即ClassCastException
多态的存在条件是两个类之间有继承关系,方法重写时
有几个方法无法被重写:1,static 方法,属于类,它不属于实例
2,final 常量
3,private方法
package Demo6;
public class Application {
public static void main(String[] args) {
//一个对象的实际类型是确定的
//如下方的Student s1
//可以指向的引用类型就不确定了:父类的引用指向子类
//Student里的方法包含自己本身有的,从父类继承来的
Student s1 = new Student();
//可以指向子类,但无法调用子类独有的方法
Person s2 = new Student();
Object s3 = new Student();
//对象能执行那些方法取决于左边里是否包含,与右边关系不大
//左边,即引用类型决定了有无权限取调用这个方法
//右边,即实际对象类型决定了调用方法是执行哪一种版本,是原始的,还是子类重写过的
s1.run();//子类重写父类的方法,此时执行了子类的方法
s2.run();
s1.eat();
((Student) s2).run();//强制转换,依旧遵循高转低将Person转换为Student,方便其调用Student中独有的方法
}
}
package Demo6;
public class Person {
public void run(){
System.out.println("四分配");
}
}
package Demo6;
public class Student extends Person {
@Override
public void run() {
System.out.println("直面失败");
}
public void eat(){
System.out.println("及时行乐");
}
}

浙公网安备 33010602011771号