中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

好程序員Java實用教程系列之對象的轉型

發布時間:2020-09-30 03:21:05 來源:網絡 閱讀:101 作者:wx5da18b5c4b01e 欄目:編程語言

好程序員Java今日分享實用的Java教程之對象的轉型

體現:

  1. 父類的引用可以指向子類的對象
  2. 接口的引用可以指向實現類的對象

轉型:

  1. 向上轉型
    1. 由子類類型轉型為父類類型,或者由實現類類型轉型為接口類型
    2. 向上轉型一定會成功,是一個隱式轉換
    3. 向上轉型后的對象,將只能訪問父類或者接口中的成員
  2. 向下轉型
    1. 由父類類型轉型為子類類型,或者由接口類型轉型為實現類類型
    2. 向下轉型可能會失敗,是一個顯式轉換
    3. 向下轉型后的對象,將可以訪問子類或者實現類中特有的成員
instanceof關鍵字
  1. 針對于向下轉型的。

    1. 如果向下轉型不成功,會怎樣?

      1. 會有一個異常 ClassCastException
    2. 如何避免這種情況?

      1. 在向下轉型之前,我們先判斷一下這個對象是不是要轉型的類型

      2. 怎么判斷?

        1. 關鍵字 instanceof
        Animal animal = new Dog();
        if (animal instanceof Dog) {
            // 說明animal的確是一個Dog
        }

如果一個類中重寫了父類的某一個方法。此時:

  1. 如果用這個類的對象來調用這個方法,最終執行的是子類的實現。
  2. 如果用向上轉型后的對象來調用這個方法,執行的依然是子類的實現。
    1. 因為向上轉型后的對象,歸根到底還是子類對象。
抽象類與抽象方法

抽象:abstract

抽象類:

? 用關鍵字abstract修飾的類,就是抽象類

抽象方法:

? 用關鍵字abstract修飾的方法,就是抽象方法

特點:

抽象方法:

  1. 抽象方法使用abstract來修飾,只有聲明,沒有實現。

    public abstract void bark();
    1. 抽象方法,只能夠寫在抽象類中。

抽象類:

  1. 抽象類使用abstract來修飾,抽象類不能實例化對象。
  2. 抽象類中是可以寫非靜態的成員的,這時候這些非靜態成員是可以繼承給子類的。
  3. 抽象類中是可以包含構造方法的。

結合抽象類和抽象方法:

  1. 非抽象子類在繼承一個抽象父類的同時,要實現父類中所有的抽象方法。

注意事項:

final關鍵字

  1. 抽象類可以用final來修飾嗎?
    1. 不能!因為final表示這個類無法被繼承。但是對于抽象類來說,如果無法被繼承,則這個抽象類沒有任何意義。
  2. 抽象方法可以用final修飾嗎?
    1. 不能!因為final修飾的方法無法被重寫。但是抽象方法又只能寫在抽象類中。如果一個抽象方法用final來修飾了,此時這個方法將無法被非抽象子類重寫,那這個子類就會有問題。

抽象類和抽象方法的實用場景:

可以用抽象類和抽象方法來實現一些簡單規則的制定。

? 例如:所有的快遞公司都必須要會xxxxx。KFC、麥當勞、

如果僅僅用抽象類和抽象方法來進行規則指定、行為約束:

? 弊端:因為Java是單繼承的語言,如果一個類為了遵循某一種規范,而去繼承一個抽象類,此時這個類將無法再繼承其他類。

? 為了解決這樣的問題,我么可以使用接口進行行為約束,規范代碼。

接口

關鍵字:interface

語法:

? 和類是比較像的,但是他不是類

[訪問權限修飾符] interface 接口名字 {
    // 接口中的成員
}
  1. 訪問權限修飾符:和類一樣,只能有 public 和默認的default權限。
  2. 接口不是類,不能實例化對象。
  3. 接口,暫時和類寫成平級的關系。
  4. 接口名字是一個標識符,遵循大駝峰命名法

接口中成員的定義:

  1. 屬性:接口中的屬性,默認的修飾符是 public static final
  2. 構造方法:接口中不能寫構造方法
  3. 方法:
    1. 接口中的方法都是抽象方法
    2. 接口中的方法訪問權限修飾符都是public

接口是需要被類來實現的。

實現接口關鍵字: implements

讓類實現接口:

public class Shunfeng extends Company implements Express {

}
  1. 一個非抽象類在實現接口后,需要實現接口中所有的抽象方法。

  2. 一個類在繼承自一個父類后,還可以再去實現接口。

    1. 如果同時有父類和接口,那么繼承父類在前,實現接口在后
  3. 一個類可以實現多個接口

    1. 如果一個類實現的多個接口中有相同的方法,這個方法在實現類中只需要實現一次即可。
  4. 接口之間是有繼承關系的,而且接口之間的繼承是多繼承。

    public interface GrilFriend extends HouseKeeping, Takecare {
    
    }
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

曲阜市| 衡阳市| 岑巩县| 三穗县| 古交市| 长宁区| 南昌市| 周宁县| 苏尼特左旗| 锡林浩特市| 车险| 沙河市| 鄯善县| 论坛| 拜城县| 渝中区| 大田县| 宽城| 博白县| 晋中市| 景泰县| 福贡县| 临湘市| 乐亭县| 铁岭市| 长寿区| 边坝县| 法库县| 绥中县| 中阳县| 图木舒克市| 绥德县| 石家庄市| 白河县| 习水县| 金昌市| 石城县| 宁乡县| 吉林省| 乌兰浩特市| 丰台区|