欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVA上转型、下转型

程序员文章站 2022-03-09 09:36:15
...

 

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方法。

JAVA上转型、下转型

 father.sayBye();

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

JAVA上转型、下转型

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

下转型:

下转型并不常用。

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

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

那应该怎么下转型呢?

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


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

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