日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

idea 查看一个类的子类_Java-05-多态、抽象类、接口和内部类

發布時間:2025/4/5 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 idea 查看一个类的子类_Java-05-多态、抽象类、接口和内部类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是多態

多態是指實例方法根據調用者會有不同的表現,就像多種形態一樣。這里要注意的是:靜態方法沒有多態的說法。

可以看到,雖然都是 Person 類,但是 p1 是真正的 Person,而 p2 是 Person 的子類,子類中又 Override 了父類的方法,所以雖然看上去都是調用 sayHi 方法,但是有著不同的表現,這就是多態的體現了。

什么是抽象類

抽象類的本質仍然是個類,所以類可以有的東西,它也可以有,此外它還可以聲明抽象方法。

聲明抽象方法應該要注意:

  • 抽象方法不能是 private 或者是 static. 這個也可以理解。
  • 如果是 private 的話,那么子類就無法重寫了。
  • 如果是 static 的話,那就意味著可以被直接調用,但是很明顯抽象方法沒有方法體,不能被直接調用。
  • 為什么要使用抽象類

    先假設我們沒有抽象類,我們要實現一個需求:

    有一個 Person 類,他有 sayHi 方法,供子類使用,還有一個 work 方法,由于不知道子類的具體實現,所以留空。

    那么我們會寫出這樣的代碼:

    但是即使子類不重寫的話,編譯不會報錯,那如果我們改成抽象類的話,子類就必須實現。

    所以抽象類就像是「模板方法」,它預留了幾個方法空位,讓子類自行實現。

    什么是接口

    如果一個抽象類中的方法都是抽象方法,那么就應該可以把它聲明為接口。

    接口中也可以包含成員,但是成員都是 public static final 的,即常量。

    我們在 IDEA 中寫的時候,會看到它顯示灰色,那么就表示我們不用顯式地聲明。

    為什么要使用接口

    我們都知道,Java 中的類只能繼承一個類。有時候我們會遇到一些非常“不同尋常”的需求:

  • 一個 Person 類。
  • 一個 Programer 類繼承 Person。
  • 一個 Teacher 類繼承 Person。
  • 問題來了,如果我想要一個「會編程的老師」怎么辦...
  • Java 中一個類可以實現多個接口,所以彌補了這個短板。

    但是接口有一個非常非常明顯的弊端:接口一旦發布,就無法更改了。

    怎么理解這句話呢?比如 A 接口有 B、C、D 三個方法,那么我繼承了 A 接口并且實現了這些方法。假如有一天 A 接口要增加一個 E 方法,如果我不跟著改動,那么我的代碼就報錯了,因為實現接口的時候必須要實現接口的所有抽象方法。

    為了這個問題,Java8 引入了接口的默認方法。但是在傳統的面向對象編程的思想中,接口應該只包含抽象方法。

    內部類和靜態內部類

    內部類是指我們在類中又定義了一個類,一般是起到更好的封裝效果。

    內部類可以選擇是否用 static 修飾符來修飾,兩者的區別就是是否包含一個外部類的引用,非靜態內部類是包含外部類的引用的,而靜態內部類是不包含外部類的引用的。

    我們推薦使用「靜態內部類」,因為可以減少大小,如果編譯報錯,那么就去掉 static 修飾符。

    總結

    以上是生活随笔為你收集整理的idea 查看一个类的子类_Java-05-多态、抽象类、接口和内部类的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。