多态存在的三个必要条件
- 继承
- 重写
- 父类引用指向子类对象
多态的使用:
多态使用:父类引用指向子类对象
public class Person {
public void run() {
System.out.println("Person run");
}
public void print() {
System.out.println("Person");
}
}
public class Student extends Person {
public void sleep() {
System.out.println("Student sleep");
}
public void print() {
System.out.println("Student");
}
}
public class Man {
public static void main(String[] args) {
Student student = new Student();
Person person = new Student();
student.print(); //打印子类重写的 Student
person.print(); //打印子类重写的 Student
person.run(); //打印父类自己的 Person run
//父类引用 无法直接使用 子类独有的方法
//person.sleep();
//父类引用 若想使用子类独有的方法,必须将其类型转换
((Student) person).sleep(); //打印 Student sleep
}
}
多态对象执行的方法:
主要看对象声明时左边的类型,与右边实例化的关系不大!!
子类型的声明:
能调用的方法都是自己的,或者是继承父类的方法。
父类型的声明:
可以指向子类,但是不能调用子类独有的方法。
多态的优点
- 消除类型之间的耦合关系
- 可替换性
- 可扩充性
- 接口性
- 灵活性
- 简化性
注意:
方法具有多态,属性没有多态!!!