一、多态
1.1 什么是多态
一种事物的多种状态。如:打印机有彩色打印机和黑白打印机
1.2 使用多态的条件
1.必须在继承体系下
2.子类必须要对父类方法进行重写
3.通过父类的引用调用重写方法
多态体现:在代码运行时,当传递不同类对象时,会调用对应类中的方法。
示例:
public class Pet {
public String name;
public int age;
private int id;
int card;
protected String address;
public void feed(){
System.out.println("喂食中...");
}
}
class Dog extends Pet{
Dog dog = new Dog();
public void feed(){
System.out.println("吃骨头...") //重写了父类中的方法
}
}
public class Test {
public static void eat(pet p){
p.feed();
}
public static void main(String[] args) {
Dog dog = new Dog();
eat(dog);
}
}
二、转型
2.1 向上转型
子类到父类的转换,类似向上自动类型转换,如:Pet p = new Dog();
注意:
此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法, 不是父类的方法。
此时通过父类引用变量无法调用子类特有的方法。
此时通过父类引用只能访问到父类的属性。
2.2 向下转型
父类到子类的转换:类似之前学习过得强制类型转换,如Dog dog =(Dog)pet;