JAVA基础(17)-Java多态

多态是Java面向对象的三大特征之一

多态:是指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)

要想使用多态要满足三个条件:

              1、要有继承

              2、要有重写

              3、父类引用指向子类对象

多态的实现方式有两种:向上造型向下造型


     向上造型:父类型的变量引用子类型的对象
             (1) 父类型的变量指向不同的子类型对象,调用的功能有不同的实现       
     

 //Animal父类,子类Dog继承了父类Animal
 Animal  a =  new  Dog();
 a.noise();//叫   
 a =   new  Cat();
 a.noise();//叫   

             (2)不同的父类型变量指向同一个对象有不同的功能
       

ZhengYangDoor  a  = new  ZhengYangDoor();
a.theftproof();//防盗
a.openDoor();//开门
//父类变量指向不同子类时,同样的方法会有着不同的结果
InterA   ia = a;
ia.theftproof();   

     向下造型:将父类型(接口)的变量赋值给子类型或者是其他父类型(接口)的变量
       

Animal a = new Dog(); 
Dog dog   =(Dog)a;
dog.吃骨头();

        Cat cat = (Cat)a;//编译通过,语法正确,运行期间,造型错误
        cat.扑捉老鼠();

        将父类的变量赋值给子类后,就可以调用子类中特有的成员变量和方法了


       运行期间有可能会发生类造型异常:java.lang.ClassCastException 
             为了避免出现错误:我们需要使用关键字instanceof来判断对象是不是要转换成的类型
         if(a instanceOf Cat){
             Cat cat = (Cat)a;
         }

猜你喜欢

转载自blog.csdn.net/woainiqazwsx123/article/details/81591179