国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

150天打卡day12_繼承的意義

2021-04-20 21:31 作者:關阿姨的Java日記  | 我要投稿

package

  • 包的作用就是為了分組管理類文件,避免類名沖突

  • 一般在Java源代碼中的第一行都要指定當前的包名

  • 包名全部小寫,采用域名倒置的方式

import

  • 通過 import 來導入完整的類名

  • 快捷鍵:ctrl+shift+o

封裝的意義

  • 是指把對象的屬性和行為結(jié)合成一個獨立的整體,并盡可能的隱藏內(nèi)部實現(xiàn)的細節(jié)

  • 實現(xiàn)封裝的步驟

  • 數(shù)據(jù)私有化(用private實現(xiàn))

  • 方法公開化(用get()set()方法實現(xiàn)對象屬性的賦值,取值操作)

  • 快捷鍵:Alt+Shift+S

本節(jié)重點

繼承

生活中的繼承

我們先來思考,王者榮耀現(xiàn)在已經(jīng)發(fā)展到60多個英雄了,他們大致分為坦克,戰(zhàn)士,刺客,射手,法師,輔助六種角色。因為我喜歡玩射手,下面就拿射手來說明吧。射手相同的特征是射擊,但每個射手都有不同的射擊狀態(tài)。

?我們找一找射手這類英雄的相同點,相同點都是射擊攻擊,不同點是射擊的方式是不同的,后羿拿弓箭射,魯班是機槍掃射,狄仁杰是拿令牌扔。

找出這些不同點,如何使用面向?qū)ο髞斫鉀Q呢?面向?qū)ο蟮娜筇匦裕悍庋b,繼承,多態(tài)。很容易想到的是,我們可以設計一個射手的抽象類,里面是一個射手應有的各種方法,比如說普通攻擊,技能攻擊等等,然后在其子中類繼承這種方法,然后使用多態(tài)就可以用父類來調(diào)用子類方法了。

程序中的繼承

  • 繼承是Java面向?qū)ο缶幊碳夹g的一塊基石,因為它允許創(chuàng)建分等級層次的類。

  • 繼承就是子類繼承父類的特征和行為,使得子類具有父類相同的特征和行為。

繼承顧名思義,繼任,承接,傳承的意思。面向?qū)ο蟮恼Z言有一個好處,就是可以用生活中的

例子來說明面向?qū)ο蟮奶匦?。那么我們先來看看生活中的繼承關系有哪些?最常見的:父母子

女;汽車,電動車,自行車和車。無論哪種車,都有具備車的特性。再比如說:家里面的電飯

鍋,電磁爐,電冰箱。他們都屬于電器類,都具有名字這個屬性,也都需要用電這個方法。如

果在程序中我們一個個類去把這些重復的代碼都寫上去,那不是浪費時間和精力嗎?聯(lián)系之前

的知識,我們能夠從一個個對象中抽象出來一個類。那么我們也應該能夠從具有包含關系的一

個個類中抽象出一個具有共同屬性和方法的類,也就是父類。比如說無論是三角形,矩形還是

圓形,他們都有求邊長的方法,那么就可以抽象出一個父類圖形類,類中有一個求邊長的方

法。Java中的繼承使用的是extends關鍵字,繼承的類叫做子類(派生類或者超類),被繼承

的類叫做父類(或者基類)。凡是這種可以有包含關系的類都能實現(xiàn)繼承關系。

?

例如:

兔子和羊?qū)儆谑巢輨游镱?,獅子和豹屬于食肉動物類。

食草動物和食肉動物又是屬于動物類。

?所以繼承需要符合的關系是:is-a,父類更通用,子類更具體


類的繼承格式

在Java中使用 extends 來實現(xiàn)類的繼承,extends來源于UML類圖中,是擴展,泛化的意思,

子類不但可以繼承父類的屬性和方法,還具有自身的特征,可以做額外的擴展。

?繼承的語法:


為什么要使用繼承

繼承可以實現(xiàn)代碼的復用

開發(fā)寵物類,其中動物分別為小貓和小狗

  • 后裔:屬性(name)方法(射擊)

  • 魯班七號:屬性(name)方法(射擊)

后裔類

魯班七號類

從這兩段代碼可以看出來,代碼存在重復,導致后果就是代碼量大且臃腫,而且維護性不高

(維護性主要是后期需要修改的時候,就需要修改很多的代碼,容易出錯)。

?所以要從根本上解決這兩段代碼的問題,就需要繼承,將兩段代碼中相同的部分提取出來組

成一個父類:

這個Shooter類就可以作為一個父類,然后魯班七號類和后裔類繼承這個類之后,就具有父類

當中的屬性和方法,子類就不會存在重復的代碼,維護性也提高,代碼也更加簡潔,提高代碼

的復用性(復用性主要是可以多次使用,不用再多次寫同樣的代碼) 繼承之后的代碼:

?

測試類

?

訪問修飾符修飾成員

(1)public: 用public修飾的類、類屬變量及方法,包內(nèi)及包外的任何類(包括子類和普通

類)均可以訪問;

?(2)protected: 用protected修飾的類、類屬變量及方法,包內(nèi)的任何類及包外那些繼承了

該類的子類才能訪問(此處稍后解釋,protected重點突出繼承;

?(3)default: 如果一個類、類屬變量及方法沒有用任何修飾符(即沒有用public、

protected及private中任何一種修飾),則其訪問權(quán)限為default(默認訪問權(quán)限)。默

? ? ? ?認訪問權(quán)限的類、類屬變量及方法,包內(nèi)的任何類(包括繼承了此類的子類)都可以訪問

它,而對于包外的任何類都不能訪問它(包括包外繼承了此類的子類)。default重點突出包

?(4)private: 用private修飾的類、類屬變量及方法,只有本類可以訪問,而包內(nèi)包外的任

何類均不能訪問它。

?

繼承的特性

  • 子類擁有父類非private的屬性和方法

  • 子類可以對父類的進行擴展

super關鍵字

super關鍵字作用

1:主要存在于子類方法中,用于指向子類對象中父類對象。

2:訪問父類的屬性

public class Pet { //用protected修飾的類、類屬變量及方法,包內(nèi)的任何類及包外那些繼承了該類的子類才能訪問 protected String name; public Pet(String name) { ?super(); ?this.name = name; } } class Cat extends Pet { public Cat(String name) { ? ?super(name); } @Override public String toString() { ? ?return "Cat [name=" + super.name + "]"; } }

?3:訪問父類的函數(shù)

?4:訪問父類的構(gòu)造函數(shù)

父類:

小貓類:

?

注意

this和super很像,this指向的是當前對象的調(diào)用,super指向的是當前調(diào)用對象的父類。類加載

完畢,創(chuàng)建對象,父類的構(gòu)造方法會被調(diào)用(默認自動無參),然后執(zhí)行子類相應構(gòu)造創(chuàng)建了

一個子類對象,該子類對象還包含了一個父類對象。該父類對象在子類對象內(nèi)部。this ?super

只能在有對象的前提下使用。


父類的引用指向子類的對象

一個子類的對象可以向上造型為父類的類型,就是定義父類型的引用可以指向子類的對象

在main方法中,聲明了父類型的引用來指向子類的對象,但是通過父類的引用只能訪問父類所定義的成員,不能訪問子類所擴展的部分。

?

歡迎??點贊+關注,筆芯??

?


150天打卡day12_繼承的意義的評論 (共 條)

分享到微博請遵守國家法律
碌曲县| 平江县| 柳林县| 成武县| 梁平县| 西青区| 闻喜县| 博爱县| 廉江市| 神农架林区| 棋牌| 曲水县| 大悟县| 广丰县| 册亨县| 兴业县| 石狮市| 文安县| 体育| 开远市| 乐陵市| 乌审旗| 宜良县| 龙南县| 天祝| 开平市| 赤水市| 长兴县| 墨竹工卡县| 石渠县| 五常市| 北碚区| 大同市| 西峡县| 大兴区| 虞城县| 武城县| 衢州市| 巧家县| 广平县| 定南县|