中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

公司和網(wǎng)站備案查詢密碼網(wǎng)絡(luò)營(yíng)銷和傳統(tǒng)營(yíng)銷的區(qū)別有哪些

公司和網(wǎng)站備案查詢密碼,網(wǎng)絡(luò)營(yíng)銷和傳統(tǒng)營(yíng)銷的區(qū)別有哪些,網(wǎng)站建設(shè)報(bào)價(jià)明細(xì)表,安徽六安疫情最新消息目錄 一. 繼承 1. 為什么需要繼承 2. 繼承的概念 3. 繼承的語(yǔ)法 4. 訪問父類成員 4.1 子類中訪問父類的成員變量 4.2 子類中訪問父類的成員方法 5. super關(guān)鍵字 6. super和this關(guān)鍵字 7. 子類構(gòu)造方法 8. 代碼塊的執(zhí)行順序 9. protected訪問修飾限定符 10. 繼承方式…

目錄

一. 繼承

1.?為什么需要繼承?

2.?繼承的概念

3. 繼承的語(yǔ)法

?4. 訪問父類成員

4.1 子類中訪問父類的成員變量

4.2 子類中訪問父類的成員方法

5. super關(guān)鍵字

6. super和this關(guān)鍵字

?7. 子類構(gòu)造方法

8. 代碼塊的執(zhí)行順序

?9. protected訪問修飾限定符

10. 繼承方式

11.final關(guān)鍵字

12. 繼承與組合

結(jié)語(yǔ)


一. 繼承

1.?為什么需要繼承?

在Java中類是對(duì)現(xiàn)實(shí)生活中一組對(duì)象的抽象描述,是創(chuàng)建對(duì)象的模板,經(jīng)過實(shí)例化后的對(duì)象可以用來表示現(xiàn)實(shí)中的實(shí)體,但是我們可以發(fā)現(xiàn)很多事物是存在一些關(guān)聯(lián)的,比如:永劫無(wú)間中的治療型英雄和進(jìn)攻性英雄、他們都是英雄角色

?用我們的Java語(yǔ)言該如何實(shí)例化一個(gè)永劫無(wú)間中的英雄對(duì)象呢

public class Therapeutic {//治療型public String name ;//表示名字public int age;//表示年齡public int HP;//表示血量public Therapeutic(String name, int age, int HP) {this.name = name;this.age = age;this.HP = HP;}public void run(){System.out.println(this.name +"正在跑...");}public void used_Treatskill(){System.out.println(this.name+"使用了治療技能...");}
}public class Offensive {//進(jìn)攻型public String name ;//表示名字public int age;//表示年齡public int HP;//表示血量public Offensive(String name, int age, int HP) {this.name = name;this.age = age;this.HP = HP;}public void run(){System.out.println(this.name +"正在跑...");}public void used_Offensive_skill(){System.out.println(this.name+"使用了進(jìn)攻技能...");}
}

通過上述代碼我們可以發(fā)現(xiàn),在我們的進(jìn)攻型英雄和治療型英雄的中存在大量的重復(fù)代碼,如圖所示:

那么有什么辦法能夠?qū)⑦@些共性抽取,來減少代碼的冗余和增加代碼的復(fù)用性呢?那么在我們面向?qū)ο蟮乃枷胫刑岢隽死^承的概念,專門用來進(jìn)行共性抽取,實(shí)現(xiàn)代碼復(fù)用

2.?繼承的概念

在Java中,繼承是面向?qū)ο缶幊痰闹匾匦灾?#xff0c;它允許一個(gè)類(子類)繼承另一個(gè)類(父類)的屬性和方法,從而減少代碼的冗余和實(shí)現(xiàn)代碼的復(fù)用,繼承主要解決的問題就是:共性的抽取,實(shí)現(xiàn)代碼復(fù)用。

例如上述說的:治療型英雄和進(jìn)攻型英雄都是英雄人物,那么我們可以將共性的內(nèi)容進(jìn)行抽取。

3. 繼承的語(yǔ)法

在實(shí)現(xiàn)上述例子繼承關(guān)系之前,我們先來學(xué)習(xí)一下繼承的語(yǔ)法。在Java中要實(shí)現(xiàn)類之間的繼承關(guān)系,我們需要借助extends關(guān)鍵字:

修飾符 class 子類 extends 父類 {內(nèi)容// ... 
}

那么對(duì)于上述例子我們就可以重新設(shè)計(jì):

//英雄類
public class Heroic_Characters {public String name ;//表示名字public int age;//表示年齡public int HP;//表示血量public Heroic_Characters(String name, int age, int HP) {this.name = name;this.age = age;this.HP = HP;}public void run(){System.out.println(this.name +"正在跑...");}
}//治療型英雄類
public class Therapeutic extends Heroic_Characters {public Therapeutic(String name, int age, int HP) {super(name, age, HP);}//治療型public void used_Treatskill(){System.out.println(this.name+"使用了治療技能...");}
}
//進(jìn)攻型英雄類
public class Offensive extends Heroic_Characters{public Offensive(String name, int age, int HP) {super(name, age, HP);}//進(jìn)攻型public void used_Offensive_skill(){System.out.println(this.name+"使用了進(jìn)攻技能...");}
}
  • 繼承后。子類會(huì)繼承父類中的成員變量和成員方法
  • 如果子類和父類的成員變量、成員屬性都相同。那么繼承就變得沒有意義,所以子類繼承父類后,需要有自己特有的成員或者方法,體現(xiàn)出與父類的不同。

?4. 訪問父類成員

子類繼承父類之后,在子類中我們能否直接訪問從父類繼承下來的成員呢?

此時(shí)我們分為兩種情況:

  1. 子類中訪問父類的成員變量???????????????
    1. 子類和父類中不存在同名的成員變量
    2. 子類和父類中存在同名的成員變量
  2. 子類訪問父類中的成員方法
    1. 成員方法名字不同
    2. 成員方法名字相同

4.1 子類中訪問父類的成員變量

1.子類和父類中不存在同名的成員變量

2.子類和父類中存在同名的成員變量

?

總結(jié):在子類訪問成員變量時(shí),如果訪問的成員變量在子類中存在,那么優(yōu)先訪問子類自己的成員變量,如果子類沒有再去父類中找,如果子類和父類都沒有,那么就會(huì)報(bào)錯(cuò)。

4.2 子類中訪問父類的成員方法

?1.成員方法名字不同

2.成員方法名字相同

總結(jié):當(dāng)子類成員方法和父類成員方法名字相同時(shí),優(yōu)先從子類中找,如果子類沒有就去父類找。都找不到則進(jìn)行報(bào)錯(cuò)處理。

?那么如果我想在子類和父類成員變量或成員方法相同的情況下,訪問父類的成員該怎么辦呢?

5. super關(guān)鍵字

當(dāng)我想實(shí)現(xiàn)上述的情況時(shí),這時(shí)候就要引入Java中提供的關(guān)鍵字super來解決:該關(guān)鍵字的作用就是在子類方法中訪問父類的成員。

?在子類方法中,想要明確訪問父類中的成員變量和方法,借助super關(guān)鍵字就好啦,但是super只能在非靜態(tài)方法中使用。

6. super和this關(guān)鍵字

相同點(diǎn)不同點(diǎn)
super

1. 都是Java中的關(guān)鍵字

2. 只能在非靜態(tài)方法中使用,訪問非靜態(tài)的成員

3.在構(gòu)造方法中調(diào)用時(shí),必須是第一條語(yǔ)句

1.this表示的是當(dāng)前對(duì)象的引用,supe表示的是從父類繼承下來的部分成員的引用

2. 在非靜態(tài)成員方法中, this 用來訪問本類的方法和屬性, super 用來訪問父類繼承下來的方法和屬性
3. 在構(gòu)造方法中: this( ) 用于調(diào)用本類構(gòu)造方法, super( ) 用于調(diào)用父類構(gòu)造方法,兩種調(diào)用不能同時(shí)在構(gòu)造 方法中出現(xiàn)
4. 構(gòu)造方法中一定會(huì)存在 super(...) 的調(diào)用,用戶沒有寫編譯器也會(huì)增加,但是 this(...) 用戶不寫則沒有
this

?7. 子類構(gòu)造方法

當(dāng)我們子類對(duì)象構(gòu)造的時(shí)候,我們會(huì)先調(diào)用父類的構(gòu)造方法,先構(gòu)造父類對(duì)象再執(zhí)行子類的構(gòu)造方法:

?那么為什么會(huì)出現(xiàn)這樣情況呢?

子類對(duì)象中成員是有兩部分組成的,父類繼承下來的以及子類新增加的部分 。父子父子肯定是先有父再有子,那么在構(gòu)造子類對(duì)象時(shí)候 ,先要調(diào)用父類的構(gòu)造方法,將從父類繼承下來的成員構(gòu)造完整 ,然后再調(diào)用子類自己的構(gòu)造方法,將子類自己新增加的成員初始化完整。

這里有個(gè)注意事項(xiàng):

1. 若父類顯式定義無(wú)參或者默認(rèn)的構(gòu)造方法,在子類構(gòu)造方法第一行默認(rèn)有 隱含的super() 調(diào)用,即調(diào)用父類構(gòu)造方法
2. 如果父類構(gòu)造方法是帶有參數(shù)的,此時(shí)需要用戶為子類顯式定義構(gòu)造方法,并在子類構(gòu)造方法中選擇合適的父類構(gòu)造方法調(diào)用,否則編譯失敗

?

8. 代碼塊的執(zhí)行順序

代碼塊分為幾個(gè)重要的代碼塊:實(shí)例代碼塊靜態(tài)代碼塊那么在有繼承關(guān)系的時(shí)候,這幾個(gè)代碼塊的執(zhí)行順序是怎么樣的呢?

?通過運(yùn)行結(jié)果我們就可以知道,代碼塊的執(zhí)行順序是:父類靜態(tài)代碼塊 --> 子類靜態(tài)代碼塊 --> 父類實(shí)例代碼塊 --> 父類構(gòu)造方法 --> 子類實(shí)例代碼塊 --> 子類構(gòu)造方法

注意:當(dāng)?shù)诙螌?shí)例化子類對(duì)象時(shí),父類和子類的靜態(tài)代碼塊都將不會(huì)再執(zhí)行:

?9. protected訪問修飾限定符

為了實(shí)現(xiàn)封裝特性, Java 中引入了訪問限定符,主要限定:類或者類中成員能否在類外或者其
他包中被訪問。

?1. 被public修飾

此時(shí)的Dog類和Main類在不同的包底下并且不是繼承關(guān)系,但是在Main類中任然能夠訪問Dog類中的成員變量?,所以public的權(quán)限是最廣的。

2. 被protected修飾

此時(shí)的Dog類和Main類在不同的包底下是繼承關(guān)系,在Main類中能夠訪問Dog類中的成員變量?,那么這就是protected訪問修飾符的權(quán)限(不同包有繼承關(guān)系的類能夠訪問),如果不繼承的話:

就會(huì)像上圖中一樣發(fā)生報(bào)錯(cuò)。這里有一個(gè)很重要的注意事項(xiàng):

被protected修飾,可以訪問不同包的有繼承關(guān)系的類,但是訪問的時(shí)候我們是需要通過new子類對(duì)象來進(jìn)行訪問的,直接new父類對(duì)象是訪問不了的

10. 繼承方式

在我們的Java中只支持單繼承、多層繼承、不同類繼承同一個(gè)類,但是不支持多繼承:

(1)單繼承

這種一個(gè)類只繼承另一個(gè)類的繼承方式叫做單繼承。

(2)多層繼承

?這種一個(gè)類繼承另一個(gè)類,此時(shí)又有一個(gè)類繼承該類的繼承方式叫做多繼承

(3)不同類繼承同一個(gè)類

此時(shí)狗類和貓類都繼承Animal這個(gè)類

注意:一個(gè)類是不能繼承多個(gè)類的,也就是所謂的多繼承~是不存在的

11.final關(guān)鍵字

一般我們不希望出現(xiàn)超過三層的繼承關(guān)系, 如果繼承層 次太多, 就需要考慮對(duì)代碼進(jìn)行重構(gòu)了, ?如果想從語(yǔ)法上進(jìn)行限制繼承, 就可以使用 final 關(guān)鍵字,final關(guān)鍵字有三種使用方式:可以修飾變量、可以修飾成員方法、可以修飾類。
(1)修飾變量

當(dāng)我們用final修飾變量的時(shí)候,就具備了常量的屬性,此時(shí)變量的值是不能進(jìn)行修改的

(2)修飾成員方法

當(dāng)我們的成員方法被final修飾,此時(shí)的成員方法是不能被重寫的

(3)修飾類

?當(dāng)類被final修飾,說明當(dāng)前類是不能被繼承的

12. 繼承與組合

組合和繼承類似 , 組合也是一種表達(dá)類之間關(guān)系的方式 , 也是能夠達(dá)到代碼重用的效果。組合并沒有涉及到特殊的語(yǔ)法(諸如 extends 這樣的關(guān)鍵字 ), 僅僅是將一個(gè)類的實(shí)例作為另外一個(gè)類的字段。
繼承表示對(duì)象之間是 is-a 的關(guān)系 ,比如:狗是動(dòng)物,貓是動(dòng)物.....
組合表示對(duì)象之間是 has-a 的關(guān)系 ,比如:水果籃中有蘋果、香蕉.....
用代碼實(shí)現(xiàn)一個(gè)組合:

?那么此時(shí)這種表達(dá)類之間關(guān)系的方式就是一種組合~

結(jié)語(yǔ)

那么以上就是本期Java繼承的全部?jī)?nèi)容啦~希望大家收獲滿滿,在此感謝大家的觀看!!!

?

http://www.risenshineclean.com/news/29741.html

相關(guān)文章:

  • 宣傳片視頻西安seo排名
  • wordpress采集網(wǎng)頁(yè)文章安卓?jī)?yōu)化大師app下載
  • 工作總結(jié)ppt模板免費(fèi)寧波優(yōu)化推廣選哪家
  • 桂林做網(wǎng)站的公司seo是哪里
  • 購(gòu)物網(wǎng)站開發(fā)技術(shù)河北網(wǎng)站優(yōu)化公司
  • 網(wǎng)站風(fēng)格類型百度流量統(tǒng)計(jì)
  • 為什么做電子商務(wù)網(wǎng)站的原因中國(guó)建設(shè)網(wǎng)官方網(wǎng)站
  • 制作一個(gè)買股票的網(wǎng)站怎么做seo比較好的公司
  • 網(wǎng)站畢業(yè)設(shè)計(jì)怎么做網(wǎng)絡(luò)營(yíng)銷推廣活動(dòng)有哪些
  • 合伙做網(wǎng)站怎么分配股權(quán)各地疫情最新消息
  • 大連小型網(wǎng)站建設(shè)關(guān)鍵的近義詞
  • 做本地團(tuán)購(gòu)網(wǎng)站游戲網(wǎng)站交換友情鏈接
  • 合肥網(wǎng)站建設(shè)找佳達(dá)百度seo服務(wù)方案
  • 廣西網(wǎng)站建設(shè)開發(fā)外包市場(chǎng)營(yíng)銷方案范文5篇
  • 泗陽(yáng)做網(wǎng)站公司競(jìng)價(jià)托管就選微競(jìng)價(jià)
  • 網(wǎng)站logo用什么做百度網(wǎng)站打不開
  • 網(wǎng)站批量做httpsseo優(yōu)化實(shí)訓(xùn)報(bào)告
  • 深圳租房建設(shè)局網(wǎng)站天天外鏈官網(wǎng)
  • 淮安建設(shè)工程協(xié)會(huì)網(wǎng)站查詢站長(zhǎng)之家 seo查詢
  • 淄博網(wǎng)站制作seo優(yōu)化專員
  • 在什么網(wǎng)站可以自承包活來做搜索引擎入口
  • 廈門功夫廣告設(shè)計(jì)網(wǎng)站建設(shè)工作室網(wǎng)站優(yōu)化排名資源
  • 市總工會(huì)智慧網(wǎng)站建設(shè)總結(jié)奶茶的營(yíng)銷推廣軟文
  • 綿陽(yáng) 網(wǎng)站設(shè)計(jì)推廣引流哪個(gè)軟件最好
  • 新疆網(wǎng)站建設(shè)一條龍服務(wù)網(wǎng)絡(luò)營(yíng)銷產(chǎn)品的首選產(chǎn)品
  • 做資訊網(wǎng)站要什么手續(xù)公司怎么推廣網(wǎng)絡(luò)營(yíng)銷
  • 網(wǎng)站內(nèi)容注意事項(xiàng)福州關(guān)鍵詞排名優(yōu)化
  • 鄭州做網(wǎng)站公司msgg平臺(tái)推廣是做什么
  • 網(wǎng)絡(luò)營(yíng)銷的特點(diǎn)主要有哪些seo軟件推薦
  • 律所網(wǎng)站建設(shè)方案書怎么寫怎么找推廣渠道