1.多态
1) 引用多态
父类的引用可以指向本(父类自己的)类的对象
父类的引用可以指向子类的对象
2)方法多态
创建本类对象时,调用本类方法
创建子类对象时,调用子类重写的方法 或 继承的方法
demo:
父类:
public class Animal {
public void print(){
System.out.println("动物!!");
}
}
子类1:
public class Cat extends Animal {
public void print(){
System.out.println("你是只猫!!");
}
public void show(){
System.out.println("猫的另一面!");
}
}
子类2:
public class Dog extends Animal {
}
测试类:
public class TestLei {
public static void main(String[] args) {
/*****************************引用多态***********************************/
Animal work1 = new Animal(); //父类的引用可以指向本(父类自己的)类对象
Animal work2 = new Cat(); //父类的引用可以指向子类对象
//Cat work3 = new Animal(); 错的
Cat work3 = new Cat();
/***************************方法多态*************************************/
work1.print(); //print来自父类 子类继承的方法
work2.print(); //print来自子类 子类重写的方法
work3.show(); //print来自子类 ,子类的方法
// work2.show(); //错的,work2是定义的父类
/**************************类型转换**************************************/
Cat cat = new Cat();
Animal animal =cat; //向上类型转换,自动类型转换
if(animal instanceof Cat) {
Cat cat2 = (Cat)animal;
}
else {
System.out.println("无法进行类型转换,转换成Cat类型");
}
if(animal instanceof Dog){
Dog dog = (Dog)animal; //编译时Dog类,运行时Cat类
}
else{
System.out.println("无法进行类型转换,转换成Dog类型");
}
}
}
运行结果:
动物!!
你是只猫!!
猫的另一面!
无法进行类型转换,转换成Dog类型