国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Java中的上下轉(zhuǎn)型

2019-11-17 04:05:52
字體:
供稿:網(wǎng)友
見下邊的程序段

package test;
class A {
    public String f(A obj)
    {
        return("A");
    }
}
class B extends A {
    public String f(B obj)
    {
        return("C");
    }
    public String f(A obj)
    {
        return("D");
    }
}

我們使用子類創(chuàng)建一個對象:

B b = new B();

然后再將這個子類的引用放到父類對象中:

A a;

a = b;

那么這個父類對象a是子類對象b的上轉(zhuǎn)型對象,對象的實(shí)體由子類負(fù)責(zé)建立,實(shí)質(zhì)還是子類,只是損失了一些功能而已,這樣的得失具體如下:

得:上轉(zhuǎn)型對象可以操作和使用子類繼承或者重寫的方法。

失:上轉(zhuǎn)型對象喪失了對子類新增成員變量或新增的方法的操作和使用。

那么下邊的這段測試代碼的打印結(jié)果就是“D”,因?yàn)閍2只能有public String f(A obj) 這個方法是可以用的。

public class TestObj
{
    public static void main(String args[])
    {  A a1 = new A();
        A a2 = new B(); //子類對象轉(zhuǎn)化為父類,稱為上轉(zhuǎn)型,不需要強(qiáng)制轉(zhuǎn)換。

        B b = new B();
        System.out.PRintln(a2.f(b)); //“D”

        System.out.println();

         if (a2 instanceof B) {
             B b1 = (B) a2;  //父類對象轉(zhuǎn)化為下轉(zhuǎn)型,此時需要使用強(qiáng)制轉(zhuǎn)換,此時需要先判斷要轉(zhuǎn)換的這個對象(也就是a2指向的這個對象)是不是B類的實(shí)例
            System.out.println(b1.f(b));//"C"
            System.out.println(b1.f(a1));//"D"
        }
    }
}  

其實(shí),java 轉(zhuǎn)型問題其實(shí)并不復(fù)雜,只要記住一句話:父類引用指向子類對象。

另外說說向上轉(zhuǎn)型的作用:由于向上轉(zhuǎn)型的作用,在要傳入子類實(shí)例的時候,我們可以方便的將父類實(shí)例作為參數(shù)定義在方法的傳入?yún)?shù)上,這樣不用利用多態(tài)特性進(jìn)行方法的重載了。其實(shí)向上轉(zhuǎn)型也是一種多態(tài)特性的體現(xiàn)。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 大竹县| 龙江县| 富裕县| 塔城市| 湘西| 平原县| 吉木萨尔县| 武穴市| 会宁县| 永仁县| 弥勒县| 黔南| 白河县| 古蔺县| 庆城县| 界首市| 额敏县| 宜兴市| 桂平市| 广平县| 乐昌市| 武胜县| 乌海市| 太和县| 闽侯县| 万盛区| 松潘县| 报价| 沅陵县| 高要市| 黑山县| 肇源县| 太原市| 井冈山市| 江陵县| 满洲里市| 天水市| 玉树县| 大同市| 建水县| 聂拉木县|