package com.oop.demo01;
public class Person {//父类
public void run(){
System.out.println("我是Person类");
}
}
package com.oop.demo01;
public class Student extends Person {//子类
@Override//重写符号
public void run() {//我们对父类的方法进行重写
System.out.println("我是Student类");
}
public void say(){
System.out.println("我说了一句话");
}
}
package com.oop.demo01;
public class Aplication1 {
public static void main(String[] args) {//主函数
Person p1 = new Person();//父类只能调用自己的方法
p1.run();
父类的引用指向父类:那么结果肯定是父类中的方法
--------------------------------------------------------
Student s1 = new Student();//子类即可以调用自己的独特的方法,也可以调用父类的方法
s1.run();
s1.say();
---------------------------------------------------------
Person p2=new Student();//这句话是父类的引用指向了子类,如果子类重写了父类的方法,那么调用方法的时候输出的是重写后的方法,既子类的方法
p2.run();
//对象能执行哪些方法,主要看对象左边的类型,与对象右边没有关系
}
}

执行代码结果
注意事项
多态是方法的多态,属性没有多态
父类和子类,有联系,类型转换异常! ClassCastException!
存在条件:继承关系,方法需要重写,父类引用指向子类对象!如:Person p1=new Student();
存在以下几个不能使用多态的修饰符(static方法属于类,它不属于实例;final常量;priva私有方法)