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;
         }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值