多态的概念
- 同一方法,可以根据发送对象的不同采用多种不同的行为方式
- 一个对象的类型式确定的,但可以指向不同的引用对象
多态存在的必要条件
- 类与类之间存在继承关系
- 子类对父类方法进行重写
- 父类的引用指向子类的对象
多态的注意点
- 多态是方法的多态,属性没有多态
- 父类中使用private static final 修饰符修饰的方法无法进行重写,也就无法多态
父类Father
public class Father {
public void run(){
System.out.println("father");
}
}
子类Son
public class Son extends Father {
@Override
public void run() {
System.out.println("son");
}
}
测试类Application
public class Application {
public static void main(String[] args) {
/* 多态的方法
1. 类与类之间有继承的关系
2. 子类重写父类的方法
3. 父类的引用指向子类对象
多态的注意点
1. 多态是方法的多态,属性没有多态
2. 父类中使用private final static修饰的方法无法被子类重写
*/
Son son = new Son();
Father father = new Son();
son.run();
father.run();
}
}
结果为:
son
son
子类重写父类方法,父类的引用指向子类,输出的仍然是子类的方法
instanceof
- instanceof用于判断引用类型的变量所指向的对象是否是一个类(或者接口,抽象类,父类)的实例
- 类与类之间有继承关系返回true,同级关系中返回false
类型转换
- 类似于基础类型转换,父类想要引用子类的方法就必须向下转型,通过强制转换:(Son)father. 子类方法();