HTML基礎(chǔ)知識(shí)點(diǎn)繼承_第1頁
HTML基礎(chǔ)知識(shí)點(diǎn)繼承_第2頁
HTML基礎(chǔ)知識(shí)點(diǎn)繼承_第3頁
HTML基礎(chǔ)知識(shí)點(diǎn)繼承_第4頁
HTML基礎(chǔ)知識(shí)點(diǎn)繼承_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、繼承的概念 在現(xiàn)實(shí)生活中的繼承,可以理解為兒子繼承了父親的財(cái)產(chǎn),即財(cái)產(chǎn)重用; 面向?qū)ο蟪绦蛟O(shè)計(jì)中的繼承,那么是代碼重用; 繼承是利用現(xiàn)有的類創(chuàng)立新類的過程,現(xiàn)有的類稱作基類或父類,創(chuàng)立的新類稱作派生類子類。基類方法和屬性派生類基類方法+ 附加方法大學(xué)系統(tǒng)人員分類樹人學(xué)生老師大學(xué)生研究生繼承的概念續(xù) 最高層是最普遍的、最一般的情況,往下每一層都比上一層更具體,并包含有高層的特征,通過這樣的層次構(gòu)造使下層的類能自動(dòng)享用上層類的特點(diǎn)和性質(zhì); 繼承其實(shí)就是自動(dòng)地共享基類中成員屬性和成員方法的機(jī)制。在Java中實(shí)現(xiàn)繼承 在Java中實(shí)現(xiàn)繼承需要使用到extends關(guān)鍵字; 實(shí)現(xiàn)繼承的一般語法是:訪問修飾

2、符 class 派生類名 extends 基類名 成員列表 如:class Student extends Person實(shí)現(xiàn)繼承例如class Person /定義人類 public String mName; /姓名 public int mAge; /年齡 public void dining() System.out.println(吃飽了.); /吃飯的方法class Student extends Person /學(xué)生類繼承于人類 public float mGrade; /成績(jī) public void examination() System.out.println(考試及格了.)

3、; /考試的方法class Teacher extends Person /教師類繼承于人類 public float mSalary; /薪水 public void prelection() System.out.println(上課很累.); /上課的方法public class InheritanceDemo /該類用于容納main方法 public static void main(String args) Student std = new Student(); /實(shí)例化學(xué)生對(duì)象 std.mName = 張三; std.mAge = 18; /為姓名和年齡賦值,訪問的是父類中的成員

4、 std.dining(); /調(diào)用吃飯的方法,訪問的是父類中的成員 std.examination(); /調(diào)用考試方法,訪問的是子類中的成員 Teacher tea = new Teacher(); /實(shí)例化教師對(duì)象 tea.mName = 譚浩強(qiáng); tea.mAge = 65; tea.dining(); tea.prelection(); 繼承的作用 當(dāng)今軟件設(shè)計(jì)的特征: 軟件規(guī)模越來越大; 軟件設(shè)計(jì)者越來越多; 軟件設(shè)計(jì)分工越來越細(xì)。 引入繼承,實(shí)現(xiàn)了代碼重用; 引入繼承,實(shí)現(xiàn)了遞增式的程序設(shè)計(jì)。繼承的作用續(xù) 繼承是能自動(dòng)傳播代碼和重用代碼的有力工具; 繼承能夠在某些比較一般的類的根

5、底上建造、建立和擴(kuò)大新類; 能減少代碼和數(shù)據(jù)的重復(fù)冗余度,并通過增強(qiáng)一致性來減少模塊間的接口和界面,從而增強(qiáng)了程序的可維護(hù)性; 能清晰地表達(dá)出類與類之間的層次構(gòu)造關(guān)系。與繼承有關(guān)的本卷須知 繼承是單方向的,即派生類可以繼承和訪問基類中的成員,但基類那么無法訪問派生類中的成員; 在Java中只允許單一繼承方式,即一個(gè)派生類只能繼承于一個(gè)基類,而不能象C+中派生類繼承于多個(gè)基類的多重繼承方式。類成員的訪問控制權(quán)限 信息隱藏是面向?qū)ο蟪绦蛟O(shè)計(jì)的重要特點(diǎn)之一,它可以: 防止類的使用者意外損壞數(shù)據(jù); 對(duì)任何實(shí)現(xiàn)細(xì)節(jié)所作的修改不會(huì)影響到使用該類的其它代碼; 使類更易于使用。 在Java中實(shí)現(xiàn)信息隱藏的是訪

6、問控制權(quán)限機(jī)制; 訪問控制權(quán)限包括4個(gè)訪問修飾符:public、protected、private和缺省; 可以使用上述訪問修飾符修飾類的成員。訪問修飾符不受任何限制,本類或非本類均可隨意訪問。public本類及其子類可以訪問(父子友好),同一個(gè)包中的其它類也可訪問(包內(nèi)友好)。protected只有相同包中的類可以訪問(包內(nèi)友好)。缺 省只有本類可以訪問,其余都不可以。private訪問控制權(quán)限列表publicpublicprotecteprotected d缺省缺省privateprivate本類本類可以可以可以可以可以可以可以可以同包子類同包子類可以可以可以可以可以可以不可以不可以同包非

7、子類同包非子類可以可以可以可以可以可以不可以不可以不同包子類不同包子類可以可以可以可以不可以不可以不可以不可以不同包且非子類不同包且非子類可以可以不可以不可以不可以不可以不可以不可以訪問修飾符位 置課堂練習(xí)1源文件BaseClass.javapackage com.chinasoftipublic class BaseClass public int pubA; protected int proB; int defC; private int priD;源文件DerivedClass.javapackage com.chinasoftipublic class DerivedClass ex

8、tends BaseClass public void fun() pubA = 10; proB = 20; defC = 30; priD = 40; 課堂練習(xí)2源文件Frist.javapublic class Frist public int pubA; protected int proB; int defC; private int priD;public class Second public void fun() Frist obj; obj = new Frist(); obj.pubA = 10; B = 20; obj.defC = 30; obj.priD

9、 = 40; 源文件Second.java課堂練習(xí)3源文件package com.chinasoftipublic class SuperClass public int pubA; protected int proB; int defC; private int priD;源文件package com.chinasoftiimport aaa.SuperClass;public class SubClass extends SuperClass public void fun() pubA = 10; proB = 20; defC = 30; priD = 40; 類的訪問權(quán)限 還可以在

10、定義類時(shí)為類添加訪問修飾符,對(duì)類進(jìn)展訪問權(quán)限控制; 對(duì)類使用的訪問修飾符只有public和缺省兩種; 被public修飾的類可以從任何地方訪問,不受限制; 不加訪問修飾符,缺省修飾的類只能從本包中訪問,不同包那么無法訪問到; 但要注意的是:在一個(gè)源文件中只能有一個(gè)被public修飾的類,并且文件名必須與public的類同名; 如果要定義多個(gè)public的類,那么必須分別寫在不同的源文件中,一個(gè)源文件只寫一個(gè)類是良好的編程習(xí)慣。繼承中的構(gòu)造方法 父類中的構(gòu)造方法不能被子類繼承,即便它是public的; 父類的構(gòu)造方法負(fù)責(zé)初始化屬于它的成員變量,而子類的構(gòu)造方法那么只需考慮屬于自己的成員變量,不必

11、去關(guān)注父類的情況。繼承中的構(gòu)造方法例如class ParentClass /定義父類 public ParentClass() /構(gòu)造方法 System.out.println(這是父類的構(gòu)造方法。); class ChildClass extends ParentClass /子類繼承于父類 public ChildClass() /構(gòu)造方法 System.out.println(這是子類的構(gòu)造方法。); public class ConstructorTest /該類用于容納main方法 public static void main(String args) ChildClass cc

12、= new ChildClass(); /實(shí)例化子類對(duì)象 構(gòu)造方法的執(zhí)行順序 當(dāng)實(shí)例化子類的對(duì)象時(shí),必須先執(zhí)行父類的構(gòu)造方法,然后再執(zhí)行子類的構(gòu)造方法; 如果父類還有更上級(jí)的父類,就會(huì)先調(diào)用最高父類的構(gòu)造方法,再逐個(gè)依次地將所有繼承關(guān)系的父類構(gòu)造方法全部執(zhí)行; 如果父類的構(gòu)造方法執(zhí)行失敗,那么子類的對(duì)象也將無法實(shí)例化。案例class Point /定義點(diǎn)類 /x軸坐標(biāo)和y軸坐標(biāo),由于準(zhǔn)備用于繼承,故修飾為protected protected float mX, mY; public Point(float x, float y) /構(gòu)造方法 mX = x; mY = y; class Cir

13、cle extends Point /定義圓類繼承于點(diǎn)類 protected float mRadius; /半徑 public Circle(float r) /構(gòu)造方法 mRadius = r; public class Demo public static void main(String args) Circle c = new Circle(2.5f); /實(shí)例化圓類對(duì)象 本例將報(bào)出錯(cuò)誤案例分析 在實(shí)例化Circle類對(duì)象時(shí),虛擬機(jī)一定會(huì)先調(diào)用其父類Point類的構(gòu)造方法; Point類的構(gòu)造方法需要兩個(gè)參數(shù)來初始化其成員,但此時(shí)并沒有獲得這兩個(gè)參數(shù),造成Point類的構(gòu)造方法無法執(zhí)

14、行; 父類的構(gòu)造方法執(zhí)行失敗從而導(dǎo)致子類Circle類的對(duì)象也無法創(chuàng)立; 問題的關(guān)鍵是:在實(shí)例化子類對(duì)象時(shí),如何將參數(shù)傳遞給父類的構(gòu)造方法?這將使用到super關(guān)鍵字。super關(guān)鍵字的第一種用途 在Java中,super關(guān)鍵字有兩個(gè)主要用途; 第一種用途是:在子類的構(gòu)造方法中,super關(guān)鍵字可以顯式地調(diào)用父類的構(gòu)造方法,用于將參數(shù)傳遞給它; 其一般語法是: super(實(shí)際參數(shù)); 需要注意的是:該語句必須是子類構(gòu)造方法的第一條語句。super關(guān)鍵字例如1class Point /定義點(diǎn)類 protected float mX, mY; /x軸坐標(biāo)和y軸坐標(biāo) public Point(fl

15、oat x, float y) /構(gòu)造方法 mX = x; mY = y; class Circle extends Point /定義圓類繼承于點(diǎn)類 protected float mRadius; /半徑 public Circle(float x, float y, float r) /構(gòu)造方法 super(x, y); /顯式調(diào)用父類構(gòu)造方法,必須是第一條語句 mRadius = r; super關(guān)鍵字的第二種用途 如果父類和子類中有同名成員,在子類中默認(rèn)訪問是屬于自己的那一個(gè)成員; super關(guān)鍵字可以明確地指定要訪問父類中的成員; 其一般語法是:super.成員名; 前提條件是:父

16、類中的該成員不是private的。super關(guān)鍵字例如2/定義父類class SuperClass protected int num; /定義子類,繼承于父類class SubClass extends SuperClass protected int num; /子類中有與父類成員同名的成員 public void fun() num = 10; /默認(rèn)訪問自己的成員 super.num = 20; /指定訪問父類的成員 super與this this關(guān)鍵字有兩種意義: 表示一個(gè)指向“implicit parameter的引用 調(diào)用本類中的另一個(gè)構(gòu)造器 super關(guān)鍵字也有兩種意義: 調(diào)用父類的方法 調(diào)用父類的構(gòu)造器 但是,super并不表示一個(gè)指向?qū)ο蟮囊茫皇且粋€(gè)特殊的關(guān)鍵字,用來告訴編譯器,現(xiàn)在要調(diào)用的是父類的方法。作業(yè) 編寫一個(gè)程序,用于創(chuàng)立一個(gè)名為Employee的父類和兩個(gè)名為Manager和Director的子類,Employee類中包含三個(gè)屬性

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論