1.向上转型:子类类型 转 父类类型
可以调用父类非私有化属性
可以调用父类非私有化方法
可以调用子类重写父类的方法
不可以调用子类属性和方法
1.动物类
public class Animal { public void eat() { } public void shout() { } }
2.猫
public class Cat extends Animal{ public void shout(){ System.out.println("喵喵喵~~~"); } }
3.狗
public class Dog extends Animal{ public void eat(){ System.out.println("啃骨头~~~"); } }
public class Test01 { public static void main(String[] args) { Animal an = new Dog();//向上转型 an.eat(); } }
啃骨头~~~
多态的缺点:不可以调用子类自己的属性和方法
2.向下转型:父类类型 转 子类类型
注意:
1.向下转型转不好就会出现ClassCastException - 类型转换异常
2.向下转型一定要使用instanceof判断
public class Test01 { public static void main(String[] args) { Animal an = new Dog();//向上转型 if(an instanceof Cat){//判断an引用指向的对象是否是Cat类型 Cat cat = (Cat) an;//向下转型 cat.shout(); }else if(an instanceof Dog){//判断an引用指向的对象是否是Dog类型 Dog dog = (Dog) an;//向下转型 dog.eat(); } } }
啃骨头~~~