package Oop;
public class Learn01S06 {
public static void main(String[] args) {
//实际的对象是确定的,引用类型不确定
//new Student06();
//new Person05();
Student06 s1 = new Student06();
Person05 s2 = new Student06();
Object s3 = new Student06();
//String s4=new Student06();报错
//指向的引用类型错误,Student类能个调用的方法都是自己的和继承父类的
s1.eat();//子类重写了父类的方法,Person类无eat的方法,执行子类的方法
// s2.eat();报错,P父类无法调用子类独有方法
s2.run();
}
}
/*多态
-->同一方法,根据发送对象不同,采取的多种不同的行为方式
存在条件
-->有继承关系,子类重写父类方法,父类引用指向子类
Father f1=new Son();
不能重写
-->static方法,属于类,不属于实例
-->final常量
-->private 私有属性继承
*/
package Oop;
public class Student06 extends Person05 {
@Override
public void run() {
super.run();
System.out.println("run");
}
public void eat(){
System.out.println("eat");
}
}
package Oop;
public class Person05 {
public void run(){
System.out.println("run");
}
}