2020久久超碰欧美精品最新亚洲欧美日韩久久精品,国产福利电影一区二区三区,亚洲欧美日韩一区在线观看,亚洲国产欧美日韩欧美特级,亚洲欧美日韩成人一区久久,欧美日韩精品一区二区三区不卡,国产欧美日韩va另类影音先锋,亚洲欧美日韩久久精品,亚洲欧美日韩国产成人精品影院,亚洲国产欧美日韩精品一区二区三区,欧美日韩国产成人高清视频,日韩久久精品国产免费观看频道,久久人人爽人人爽从片av高清,国产精品综合一区二区

首頁(yè)技術(shù)文章正文

什么是類?怎樣聲明類的繼承關(guān)系?

更新時(shí)間:2021-06-15 來(lái)源:黑馬程序員 瀏覽量:

學(xué)IT就到黑馬程序員

在現(xiàn)實(shí)生活中,說(shuō)到繼承,多會(huì)想到子女繼承父輩的財(cái)產(chǎn)、事業(yè)等。在程序中,繼承描述的是事物之間的所屬關(guān)系,通過(guò)繼承可以使多種事物之間形成一種關(guān)聯(lián)體系。例如貓和狗都屬于動(dòng)物,程序中便可以描述為貓和狗繼承自動(dòng)物;同理,波斯貓和巴厘貓繼承自貓,而沙皮狗和斑點(diǎn)狗繼承自狗。這些動(dòng)物之間會(huì)形成一個(gè)繼承體系,如圖1所示。

1623746489231_11.png

在Java中,類的繼承是指在一個(gè)現(xiàn)有類的基礎(chǔ)上去構(gòu)建一個(gè)新的類,構(gòu)建出來(lái)的新類被稱作子類,現(xiàn)有類被稱作父類或基類,子類會(huì)自動(dòng)擁有父類所有可繼承的屬性和方法。

在程序中,如果想聲明一個(gè)類繼承另一個(gè)類,需要使用extends關(guān)鍵字,其基本語(yǔ)法格式如下:

[修飾符] class 子類名 extends 父類名 {
  // 程序核心代碼
}

在上述語(yǔ)法格式中,類的修飾符是可選的,用來(lái)指定類的訪問(wèn)權(quán)限,可以使用public或者省略不寫(xiě);子類名和父類名都是必選的,并且子類與父類之間要使用extends關(guān)鍵字實(shí)現(xiàn)繼承關(guān)系。

接下來(lái)通過(guò)一個(gè)案例來(lái)學(xué)習(xí)子類是如何繼承父類的,如文件1所示。

文件1 Example01.java

     // 定義Animal類
     class Animal {
         String name; // 聲明name屬性
         // 定義動(dòng)物叫的方法
         void shout() {
             System.out.println("動(dòng)物發(fā)出叫聲");
         }
     }
     // 定義Dog類繼承Animal類
     class Dog extends Animal {
         // 定義一個(gè)打印name的方法
         public void printName() {
             System.out.println("name=" + name);
         }
     }
     // 定義測(cè)試類
     public class Example01 {
         public static void main(String[] args) {
             Dog dog = new Dog();  // 創(chuàng)建一個(gè)Dog類的實(shí)例對(duì)象
             dog.name = "沙皮狗";   // 為dog對(duì)象的name屬性進(jìn)行賦值
             dog.printName();       // 調(diào)用dog對(duì)象的printName()方法
             dog.shout();            // 調(diào)用Dog類繼承來(lái)的shout()方法
         }
     }

運(yùn)行結(jié)果如圖2所示。

1623746475267_12.jpg

圖2 運(yùn)行結(jié)果

在文件1中,Dog類通過(guò)extends關(guān)鍵字繼承了Animal類,這樣Dog類便是Animal類的子類。從圖2可以看出,子類雖然沒(méi)有聲明name屬性和shout()方法,但是卻能訪問(wèn)這兩個(gè)成員。這就說(shuō)明,子類在繼承父類的時(shí)候,會(huì)自動(dòng)擁有父類所有公共的成員。

在實(shí)現(xiàn)類的繼承中,需要注意一些問(wèn)題,具體如下:

(1)在Java中,類只支持單繼承,不允許多重繼承,也就是說(shuō)一個(gè)類只能有一個(gè)直接父類,例如下面這種情況是不合法的。

class A{} 
     class B{}
     class C extends A,B{}  // C類不可以同時(shí)繼承A類和B類

(2)多個(gè)類可以繼承同一個(gè)父類,例如下面這種情況是允許的。

   class A{}
   class B extends A{}
   class C extends A{}  // 類B和類C都可以繼承類A

(3)在Java中,多層繼承是可以的,即一個(gè)類的父類可以再去繼承另外的父類,例如下面這種情況是允許的。

   class A{}
   class B extends A{}  // 類B繼承類A,類B是類A的子類
   class C extends B{}  // 類C繼承類B,類C是類B的子類,同時(shí)也是類A的子類

(4)在Java中,子類和父類是一種相對(duì)概念,也就是說(shuō),一個(gè)類是某個(gè)類父類的同時(shí),也可以是另一個(gè)類的子類。例如上面的第3個(gè)示例中,B類是A類的子類,同時(shí)又是C類的父類。







猜你喜歡:

java基礎(chǔ)之面向?qū)ο?繼承、接口、多態(tài)

Scala子類繼承父類的方法【黑馬程序員】

json數(shù)據(jù)的格式與寫(xiě)法【Java面試題】

黑馬程序員JAVA高級(jí)軟件工程師培訓(xùn)

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!