Java中的多态,引用类型的转换

1.多态分为引用多态和方法多态,见测试类

    package com.wangcf;
    //父类
    public class Animal {
        public void eat(){
            System.out.println("父类的方法");
        }
    }
package com.wangcf;
//子类
public class Bridge extends Animal{

    public void eat(){
        System.out.println("子类鸟重写的方法");
    }
    
    public void fly(){
        System.out.println("子类鸟独有的可以飞的方法父类中没有");
    }
}
package com.wangcf;
//子类
public class Tiger extends Animal{
    
}
package com.wangcf;
//测试类
public class Test {
    public static void main(String[] args) {
        //1.引用多态
        Animal obj1=new Animal();    //父类的引用可以指向本类的对象
        Animal obj2=new Bridge();    //父类的引用可以指向子类的对象
        Animal obj3=new Tiger();
        Tiger obj4=new Tiger();
        //Bridg obj3=new Animal();    子类引用不可以指向父类
        
        //2.方法多态    优先使用子类的方法,若子类没有重写,则使用父类的方法;父类引用不可以调用子类独有的方法
        obj1.eat();    //创建父类的本类对象,调用方法时,调用的是本类的方法
        obj2.eat();    //若父类指向子类对象,调用方法为子类的重写方法
        obj3.eat();    //或者继承方法
        obj4.eat();    //若创建子类的本类对象,没有重写父类的方法,则会调用父类的方法
        //obj2.fly();    不能通过父类的引用调用子类独有的方法
        
        
    }
}

 2.引用类型的转换

(1)向上转型,小类型转换为大类型,它是隐式的,自动的,不存在隐患

(2)向下转型,大类型转换为小类型,它是强制转换,存在隐患,会参数内存溢出;可以使用instanceof运算符类避免安全性问题

package com.wangcf;
//测试类
public class Test {
    public static void main(String[] args) {
        Bridge bri=new Bridge();
        Animal animal=bri;//向上转型
        
        //Bridge bri2=animal;向下转型,错误需要使用强制转换
        Bridge bri1=(Bridge)animal;//强制
        
        //Tiger tig=(Tiger)animal;//虽然编译器没有报错,运行时会错,我们知道animal是Briger转换来的,它不能转换为Tiger
        //Tiger tiger=(Tiger)bri;    //Cannot cast from Bridge to Tiger
        //使用 instanceof 进行判断
        if(animal instanceof Tiger){
            Tiger tig1=(Tiger)animal;
        }else{
            System.out.println("无法进行类型转换");
        }
    }
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值