亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

淺析Java中的繼承與組合

 更新時間:2016年12月30日 08:33:16   作者:浩大王  
本文將介紹組合和繼承的概念及區(qū)別,并從多方面分析在寫代碼時如何進(jìn)行選擇。文中通過示例代碼介紹的很詳細(xì),有需要的朋友可以參考借鑒,下面來一起看看吧。

前言

Java是一個面向?qū)ο蟮恼Z言。每一個學(xué)習(xí)過Java的人都知道,封裝、繼承、多態(tài)是面向?qū)ο蟮娜齻€特征。每個人在剛剛學(xué)習(xí)繼承的時候都會或多或少的有這樣一個印象:繼承可以幫助我實現(xiàn)類的復(fù)用。所以,很多開發(fā)人員在需要復(fù)用一些代碼的時候會很自然的使用類的繼承的方式,因為書上就是這么寫的(老師就是這么教的)。但是,其實這樣做是不對的。長期大量的使用繼承會給代碼帶來很高的維護(hù)成本。

其實我第一次學(xué)習(xí)java 的時候根本沒有聽說過組合這個名詞,老師也更沒有講解過,我一直以為是我自己落掉了什么知識點,其實不是的,組合這個名詞暫且把它定義為一個思維性的東西吧,相信讀者都接觸過了,但是并不知道它還有這個名字。

其實所謂的組合就是創(chuàng)建一個新類去調(diào)用已經(jīng)創(chuàng)建并且調(diào)試好的類,那么這個新類就可以把它叫做是一個組合

例如我創(chuàng)建一個People

public class People {
 private String name;
 private int age;
 
 public void setName(String name){
 this.name = name;
 }
 public String getName(){
 return this.name;
 }
 public int getAge(){
 return this.age;
 }
 public void setAge(int age){
 this.age = age;
 }
}

那我現(xiàn)在要用這個類,我可以給這個類添加一些新的特性,這時候我們就可以創(chuàng)建一個新的類,然后在這個類里創(chuàng)建People的對象。

比如我現(xiàn)在創(chuàng)建一個類叫做Student

class Student {
 People people = new People();
}

然后可以在這個類里添加一些屬性,比如定義個身份為student,在這里我就不在論述了。

接下來看看繼承,其實繼承和組合本就有異曲同工之妙,先來看看是怎樣繼承的。

在java里有一個叫做extends的關(guān)鍵字,它可以幫助我們繼承,被繼承的類我們稱作父類,也可以叫做基類,超類都行,而繼承者我們稱作子類或者派生類等等

這里我們定義一個類

public class Student extends People{
 //doSomething
}

這樣一來的話,該類就繼承了父類的全部成員方法和成員變量,但是注意,聲明為private權(quán)限的字段或者方法是不會被繼承下來的。

為了證明這一點我們在student類寫一個方法

public String re(){
 return this.name;
}

這里編譯器會報一個錯"People.name is not visible",從這里就可以看出,被聲明為private 的字段或者方法是不能被繼承下來的,如果你想把它繼承下來,可以把private改成protected,這樣的話,我們就能順利的繼承下name字段。

這樣我們把People里的字段全部初始化一下,只需在代碼里加上這一段代碼塊就行了

{
 this.age = 10;
 this.name = "zhangsan";
}

接下來在主函數(shù)里聲明出這個student

Student student = new Student();
System.out.println(student.getAge());

現(xiàn)在我們驚訝的發(fā)現(xiàn)這個寫法是可行的,盡管我們沒有在子類中聲明任何的字段和方法,我們依然可以調(diào)用getAge();并且可以順利的打印出10

這是因為我們沒有在子類中重載任何方法,所以此時調(diào)用的是父類的getAge,也就可以輕松的訪問到父類的private聲明的字段了。

看完了這些相信大家對繼承已經(jīng)有了一個初步的認(rèn)識,那么在繼承機(jī)制中,各個類的構(gòu)造方法又是怎么被調(diào)用的呢,答案是自父類到子類依次調(diào)用.

演示的同時我先聲明三個類Temp1、Temp2、Temp3,與此同時Temp3繼承自Temp2,而Temp2又繼承自Temp1,這樣的話,我們在各個類的構(gòu)造方法里都放上一句打印的語句

//Temp1
System.out.println("i'm temp1");
//Temp2
System.out.println("i'm temp2");
//Temp3
System.out.println("i'm temp3");

為了方便我這里就這樣寫了,但是大家千萬要注意這些是放在各個類的構(gòu)造方法里的。

我們在主函數(shù)里創(chuàng)建一個Temp3的對象

public class Mian{
 public static void main(String[] args){
 Temp3 temp3 = new Temp3();
 }
}

我們看控制臺,打印出了

i'm temp1
i'm temp2
i'm temp3

由此可以看出先要創(chuàng)建temp3的對象,發(fā)現(xiàn)了extends關(guān)鍵字,然后順著繼承鏈往上走,找到temp2,又發(fā)現(xiàn)extends關(guān)鍵字,接著找到temp1,然后調(diào)用temp1的構(gòu)造方法,接著往下挨個調(diào)用。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

相關(guān)文章

  • Java版本的回文字算法(java版本)

    Java版本的回文字算法(java版本)

    本文給大家分享一段java代碼關(guān)于回文字算法的實例代碼,代碼簡單易懂,需要的朋友一起看看吧
    2016-10-10
  • 深入分析JAVA Synchronized關(guān)鍵字

    深入分析JAVA Synchronized關(guān)鍵字

    這篇文章主要介紹了析JAVA Synchronized關(guān)鍵字的相關(guān)知識,文中代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • Java中如何正確定義字符串

    Java中如何正確定義字符串

    這篇文章主要給大家介紹了關(guān)于Java中如何正確定義字符串的相關(guān)資料,在Java中定義一個字符串最簡單的方法是用雙引號把它包圍起來,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • Mybatis-plus多數(shù)據(jù)源配置的兩種方式總結(jié)

    Mybatis-plus多數(shù)據(jù)源配置的兩種方式總結(jié)

    這篇文章主要為大家詳細(xì)介紹了Mybatis-plus中多數(shù)據(jù)源配置的兩種方式,文中的示例代碼簡潔易懂,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-10-10
  • Mybatis自定義類型轉(zhuǎn)換器的使用技巧

    Mybatis自定義類型轉(zhuǎn)換器的使用技巧

    這篇文章主要介紹了Mybatis自定義類型轉(zhuǎn)換器的使用技巧,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Java web入門指南之在Idea上創(chuàng)建Java web項目

    Java web入門指南之在Idea上創(chuàng)建Java web項目

    好多書上的JavaWeb教程都是Eclipse以及MyEclipse,當(dāng)然這里不論IDE的好壞,下面這篇文章主要給大家介紹了關(guān)于Java web入門指南之在Idea上創(chuàng)建Java web項目的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • SpringBoot文件上傳的原理解析

    SpringBoot文件上傳的原理解析

    這篇文章主要介紹了SpringBoot文件上傳的原理解析,SpringBoot 文件上傳是一種方便快捷的方式,可以將文件上傳到服務(wù)器,通過使用SpringBoot的文件上傳功能,可以輕松地實現(xiàn)文件上傳功能,需要的朋友可以參考下
    2023-10-10
  • java 中maven pom.xml文件教程詳解

    java 中maven pom.xml文件教程詳解

    這篇文章主要介紹了java 中maven pom.xml文件教程詳解,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • 使用maven自定義插件開發(fā)

    使用maven自定義插件開發(fā)

    這篇文章主要介紹了使用maven自定義插件開發(fā),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 深入java垃圾回收的詳解

    深入java垃圾回收的詳解

    本篇文章是對java垃圾回收進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06

最新評論