JAVA上转型、下转型

 

Java里面有两种机制。上转型和下转型。

Father类

public class Father {

    public void sayHello() {

        System.out.println("Father:Hello");
    }

    public void sayBye() {

        System.out.println("Father:Bye");
    }
}

Son类

public class Son extends Father {

    public void sayHello() {

        System.out.println("Son:Hello");
    }

    //Son类特有的方法
    public void sonMethod() {

        System.out.println("这是son特有的方法");
    }
}

 

上转型:

父类对象由子类实例化。其中Son继承了Father类。

        //上转型
        Father father = new Son();
     

如上:那么father能调用的方法全是Father类的方法,如果子类Son重写了此方法的话,那么则会调用Son中重写的方法。

father.sayHello();

father对象调用sayHello()方法,此方法是Father类中的方法,Son类进行了重写。那么调用的为Son类中的sayHello方法。

 father.sayBye();

father对象调用sayBye()方法,此方法是Father类中的方法,Son类未进行重写。那么调用的为Father中的sayBye方法。

既然father是通过子类Son进行实例化的,那么father能否调用Son类中特有的方法sonMethod()呢?答案是不能。

下转型:

下转型并不常用。

Son son = (Son) new Father(); //错误的

子类对象通过父类对象直接实例化,这样是不可以的。会抛出ClassCastEcxeption异常。

那应该怎么下转型呢?

通过已经上转型的父类对象在赋给子类。


        //下转型
        Father father = new Son();
        Son son = (Son) father;

那么此时下转型的son可以调用Son的所有方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值