1. 程式人生 > >Java多型,向上轉型與向下轉型

Java多型,向上轉型與向下轉型

**多型意味著一個物件有著多重特徵,可以在特定情況下,表現出不同的狀態,從而對應不同的屬性和方法。
**
具體來說就是指在繼承過程中父類和子類中可以有多個同名但意義或者實現方式不同的屬性或方法,也就是過載和覆蓋。在實際應用中,還有兩種特殊情形:向上轉型和向下轉型。

父類

public class User {
    public String name = "父類";
    public int b = 2;
    public void print(){
        System.out.println("User的類方法");
    }
    public void b(){
        System.out.println("b");
    }
}

子類

public class Student extends User{
    public String name = "子類";
    public int a = 1;
    public void print(){
        System.out.println("Student類的方法");
    }
    public void t(){
        System.out.println("t");
    }
}

向上轉型和向下轉型

public class helloWord {
    public static void main(String[] args){
        /**
         *所謂向上轉型即是指宣告的是父類變數例項化時卻是new了一個子類
         * 這裡User是父類宣告的  new的時候呼叫的確實子類的構造方法Student()來例項化了一個物件
         * */
        User u = new Student();

        /**
         *所謂向下轉型即是指宣告的是父類變數例項化時卻是new了一個子類
         * 這裡c1是父類宣告的  new的時候呼叫的確實子類的構造方法c2()來例項化了一個物件
         * 然後用型別轉換的方式將父類宣告的引用轉換為子類的引用
         * */
        c1 c = new c2();
        c.m1();
        ((c2) c).m1();//物件引用的強制轉換  ((子類名) 父類宣告的物件名)
    }
}

class c1{
    public void m1(){
        System.out.println("c1");
    }
}


class c2 extends c1{
    public void m2(){
        System.out.println("c2");
    }
}