就类变量而言,上抛和下铸有什么区别?

就类变量而言,上抛和下铸有什么区别?

对于类变量,上抛和下抛有什么区别?

例如,在下面的程序类中,Properties只包含一个方法,但是Dog类包含两个方法,然后我们如何将Dog变量转换为动物变量。

如果转换完成了,那么我们如何用动物的变量调用狗的另一个方法。

class Animal { 
    public void callme()
    {
        System.out.println("In callme of Animal");
    }}class Dog extends Animal { 
    public void callme()
    {
        System.out.println("In callme of Dog");
    }

    public void callme2()
    {
        System.out.println("In callme2 of Dog");
    }}public class UseAnimlas {
    public static void main (String [] args) 
    {
        Dog d = new Dog();      
        Animal a = (Animal)d;
        d.callme();
        a.callme();
        ((Dog) a).callme2();
    }}


qq_遁去的一_1
浏览 408回答 3
3回答

慕斯王

向下铸造和向上铸造如下:上浇铸当我们想要将子类转换为超类时,我们使用更新(或加宽)。这是自动发生的,不需要显式地做任何事情。下播:当我们想要将一个超类转换为子类时,我们使用Downcast(或缩窄),并且在Java中不能直接进行下播,我们必须明确地这样做。Dog d = new Dog();Animal a = (Animal) d; //Explicitly you have done upcasting. Actually no need, we can directly type cast like Animal a = d;  compiler now treat Dog as Animal but still it is Dog even after upcastingd.callme();a.callme();  // It calls Dog's method even though we use Animal reference.((Dog) a).callme2();  // Downcasting: Compiler does know Animal it is, In order to use Dog methods, we have to do typecast explicitly. // Internally if it is not a Dog object it throws ClassCastException分享
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java