任務(wù)3——創(chuàng)建考試系統(tǒng)中的試題類.ppt_第1頁
任務(wù)3——創(chuàng)建考試系統(tǒng)中的試題類.ppt_第2頁
任務(wù)3——創(chuàng)建考試系統(tǒng)中的試題類.ppt_第3頁
任務(wù)3——創(chuàng)建考試系統(tǒng)中的試題類.ppt_第4頁
任務(wù)3——創(chuàng)建考試系統(tǒng)中的試題類.ppt_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、任務(wù)3創(chuàng)建考試系統(tǒng)中的試題類,學(xué)習(xí)情境一(項(xiàng)目開發(fā)準(zhǔn)備,學(xué)習(xí)目標(biāo),了解面向?qū)ο蟮幕咎匦浴?掌握類的定義和對象的創(chuàng)建。 掌握方法、變量的定義與使用。 熟悉類的訪問權(quán)限。 掌握繼承的使用。 掌握抽象類和接口的使用。 了解包的創(chuàng)建和引用,3.1 任務(wù)描述,創(chuàng)建考試系統(tǒng)中所需要的試題類(Testquestion類) 屬性:包括試題內(nèi)容、答案、用戶選擇的答案等。 方法:獲取取試題、設(shè)置選擇的答案、獲取選擇的答案、設(shè)置標(biāo)準(zhǔn)答案、獲取標(biāo)準(zhǔn)答案、檢查答案正確與否等,3.2 技術(shù)要點(diǎn),面向?qū)ο缶幊谈攀?類 對象 繼承 抽象類和接口 包,3.2.1面向?qū)ο缶幊谈攀?面向?qū)ο缶幊痰幕靖拍?面向?qū)ο蟮木幊趟枷?面

2、向?qū)ο蟮幕咎匦?萬物皆對象,世界是由什么組成的,身邊的對象,布蘭尼,朱麗葉,顧客 姓名:朱麗葉 年齡:28 體重:52千克 操作: 購買商品,姓名:布蘭尼 職銜:收銀員 年齡:35 體重:60千克 操作: 收款 打印賬單,對象的特征屬性,屬性對象具有的各種特征 每個(gè)對象的每個(gè)屬性都擁有特定值 例如:布蘭尼和朱麗葉的體重不一樣,60kg,布蘭尼,屬性,35歲,對象的特征方法,方法對象執(zhí)行的操作,打單,收銀,方法,刷卡,對象的屬性和方法,列出尼古拉斯凱奇駕駛的這輛法拉利F360 Spider的屬性和方法 列出小狗對象的屬性和方法,屬性: 品牌:法拉利 型號:F360 Spider 顏色:黃色 價(jià)

3、格:380萬元 方法: 發(fā)動(dòng) 停止 加速,屬性: 顏色:白色 方法: 叫 跑 吃,小結(jié)1,說一說教室里的對象 描述他們的屬性和方法,顏色:黑色 品牌:BENQ 投影,姓名:張三 年齡:20 學(xué)習(xí),類型:白熾燈 開 關(guān) 變亮 變暗,材制: 木質(zhì) 支撐物品,封裝,對象同時(shí)具有屬性和方法兩項(xiàng)特性 對象的屬性和方法通常被封裝在一起,共同體現(xiàn)事物的特性, 二者相輔相承,不能分割,誰看見過只有“完好的零件和顏色”而不能開動(dòng)的汽車,封裝的示例,接口,采購經(jīng)理,羅杰斯先生,法拉力公司,迪斯尼汽車公司,市場經(jīng)理,雪莉女士,要求,封裝的示例,有選擇地提供數(shù)據(jù),法拉力公司,迪斯尼汽車公司,封裝的示例,實(shí)體法拉力公司

4、,實(shí)體迪斯尼汽車公司,Auti Ltd,Buto Ltd,從對象抽象出“類,抽取出下列對象的屬性和方法的共同特征,轎車,顧客,類,顧客類 轎車類,類是模子,確定對象將會(huì)擁有的特征(屬性)和行為(方法,類是對象的類型 不同于int類型:具有方法,各種口味的球狀冰淇淋,球狀冰淇淋模子,類,類是用于組合各個(gè)對象所共有操作和屬性的一種機(jī)制,形狀類,動(dòng)物類,汽車類,類的示例,類是具有相同屬性和行為的一組對象的集合,類和對象的區(qū)別,類是概念模型, 定義對象的所 有特性和所需 的操作,對象是真實(shí)的模型,類定義實(shí)體,對象是實(shí)際的實(shí)體,小結(jié)2,類和對象有什么區(qū)別呢? 類是抽象的概念,僅僅是模板,比如說:“人”

5、對象是一個(gè)你能夠看得到、摸得著的具體實(shí)體,比如:“小布什,小布什,普京,克林頓,面向?qū)ο缶幊痰幕靖拍?1 對象 (Object) 對象是系統(tǒng)中用來描述客觀事物的一個(gè)實(shí)體,它是構(gòu)成系統(tǒng)的一個(gè)基本單位。在面向?qū)ο蟮某绦蛑?,對象就是一組變量和相關(guān)方法的集合,其中變量表明對象的屬性,方法表明對象所具有的行為。 2 類 (Class) 類是具有相同屬性和行為的一組對象的集合,它為屬于該類的所有對象提供了統(tǒng)一的抽象描述,其內(nèi)部包括屬性和行為兩個(gè)主要部分??梢哉f類是對象的抽象化表示,對象是類的一個(gè)實(shí)例。 3 消息 (Message) 對象之間相互聯(lián)系和相互作用的方式稱為消息。,一個(gè)消息只要由5個(gè)部分組成:

6、發(fā)送消息的對象、接收消息的對象、傳遞消息的方法、消息的內(nèi)容以及反饋信息。對象提供的服務(wù)是由對象的方法來實(shí)現(xiàn),因此發(fā)送消息實(shí)際上就是調(diào)用對象的方法。通常,一個(gè)對象調(diào)用另一個(gè)對象中的方法,即完成了一次消息傳遞,面向過程的程序設(shè)計(jì),面向?qū)ο蟮木幊趟枷?面向?qū)ο蟪绦蛟O(shè)計(jì)是把把復(fù)雜的問題按照現(xiàn)實(shí)世界中存在的形式分解成很多對象,這些對象以一定的形式交互(通訊、協(xié)調(diào)和配合)來實(shí)現(xiàn)整個(gè)系統(tǒng),面向?qū)ο蟮幕咎匦?封裝性 繼承性 多態(tài)性,封裝性,封裝性就是把對象的屬性和行為結(jié)合成一個(gè)獨(dú)立的相同單位,并盡可能隱蔽對象的內(nèi)部細(xì)節(jié),對外形成一個(gè)邊界,只保留有限的對外接口使之與外部發(fā)生聯(lián)系。封裝的特性使得對象以外的部分不

7、能隨意存取對象的內(nèi)部數(shù)據(jù)(屬性),保證了程序和數(shù)據(jù)不受外部干擾且不被誤用。 面向?qū)ο蟮木幊陶Z言主要通過訪問控制機(jī)制來實(shí)現(xiàn)封裝,Java語言中提供了以下4種訪問控制級別。 public: 對外公開,訪問級別最高。 potected: 只對同一個(gè)包中的類或子類公開。 默認(rèn):只對同一個(gè)包中的類公開。 Private:不對外公開,只能在對象內(nèi)部訪問,訪問級別最低,繼承性,繼承是一個(gè)類獲得另一個(gè)類的屬性和方法的過程。在Java語言中,通常我們具有繼承關(guān)系的類稱為父類(superclass,超類)和子類(subclass)。子類可以繼承父類的屬性和方法,同時(shí)又可以增加子類的新屬性和新方法,多態(tài)性,多態(tài)性是

8、指在繼承關(guān)系中的父類中定義的屬性或方法被子類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。這使得同一個(gè)屬性或方法在父類及其各子類類中具有不同的含義。 例如:哺乳動(dòng)物有很多叫聲,狗和貓是哺乳動(dòng)物的子類,它們的叫聲分別是“汪汪”和“喵喵,3.2.2 類,類的定義 成員變量 成員方法 方法重載 修飾符,定義類,定義一個(gè)類的步驟 1、定義類名 2、編寫類的屬性 3、編寫類的方法,類的定義,類通過關(guān)鍵詞class來定義,一般形式為: 類定義修飾符 class /類體 成員變量聲明 成員方法 說明: (1)類的定義通過關(guān)鍵字class來實(shí)現(xiàn),所定義的類名應(yīng)符合標(biāo)識符的規(guī)定,一般類名的第一個(gè)字母大寫。

9、 (2)類的修飾符用于說明類的性質(zhì)和訪問權(quán)限,包括public、private、abstract、final。 其中public表示可以被任何其他代碼訪問,abstract表示抽象類,final表示最終類,詳細(xì)說明見后面章節(jié)。類體部分定義了該類所包括的所有成員變量和成員方法,成員變量,成員變量是類的屬性,聲明的一般格式為: 變量修飾符 變量修飾符:public、protected、private、和默認(rèn)(frieddlly)。 成員變量,實(shí)例變量,類變量: 靜態(tài)變量, static進(jìn)行修飾,成員方法,成員方法定義的類的操作和行為,一般形式為: 方法修飾符 () 方法體 成員方法修飾符主要有pu

10、blic、private、protected、final、static、abstract和synchronized七種,前三種的訪問權(quán)限、說明形式和含義與成員變量一致。 與成員變量類似,成員方法也分為實(shí)例方法和類方法。如果方法定義中使用了static ,則該方法為類方法。public static void main(String args)就是一個(gè)典型的類方法,方法重載,重載是指同一個(gè)類的定義中有多個(gè)同名的方法,但是每個(gè)重載方法的參數(shù)的類型、數(shù)量或順序必須是不同的。每個(gè)重載方法可以有不同的返回類型,但返回類型并不足以區(qū)分所使用的是哪個(gè)方法,例如:class Area double getAr

11、ea(float r) return 3.14159*r*r; double getArea(float l,float w) return l*w;,修飾符,3.2.3 對象,對象的創(chuàng)建 對象的引用 構(gòu)造方法,對象,類是抽象,而對象是具體(實(shí)例化)。 對象的創(chuàng)建: 創(chuàng)建對象的過程就是實(shí)例化類的過程 創(chuàng)建的步驟: 1、對象的聲明 2、對象的實(shí)例化及對象的初始化,對象的創(chuàng)建,第一步:進(jìn)行對象的聲明。 一般形式為: ; 例如: Animal dog; 第二步:實(shí)例化對象,通過運(yùn)算符new實(shí)現(xiàn)的。 new 運(yùn)算符為對象動(dòng)態(tài)分配(即在運(yùn)行時(shí)分配)實(shí)際的內(nèi)存空間,用來保存對象的數(shù)據(jù)和代碼,并返回對它的的

12、引用。該引用就是new分配給對象的內(nèi)存地址。 一般形式為: =new ; 例如: dog = new Animal( ) ; 以上兩步也可合并: =new,對象的創(chuàng)建(舉例,從圖中,我們可以看到對象的聲明只是創(chuàng)建變量的引用,并不分配內(nèi)存,要分配實(shí)際內(nèi)存空間,必須new關(guān)鍵字,對象的引用,對象創(chuàng)建之后,通過“”運(yùn)算符用于訪問對象中的成員變量和成員方法。 一般形式為: 由于類變量和類方法不屬于某個(gè)具體的對象,因此我們也可以直接使用類型替代對象名訪問類變量或類方法。 例如:Animal.age=3; Animal.eat(,舉例3-1 ObjectDemo.java,例3-1 ObjectDemo.

13、java public class ObjectDemo public static void main(String args) Person a = new Person(); Person b = new Person(); Person c =null; = 張三; Person.age = 18; = 李四; c=b; System.out.println( + is + Person.age + years old); System.out.println( + is + Person.age + years old); Syst

14、em.out.println( + is + Person.age + years old); a.move(); Person.eat();,class Person String name; / 實(shí)例變量 static int age; / 類變量 void move() / 實(shí)例方法 System.out.println(Person move); static void eat() / 類方法 System.out.println(Person eat);,舉例3-1 ObjectDemo.java(續(xù),舉例3-1 ObjectDemo.java(續(xù),程序解析】 類屬于數(shù)據(jù)

15、引用類型,代碼第9行是利用對象的引用賦予值,對象b和C指向同一個(gè)堆內(nèi)存,因此兩個(gè)對象輸出的內(nèi)容是相同的。 Java中主要存在四塊內(nèi)存空間: (1)棧內(nèi)存空間:保存所有對象的名稱。 (2)堆內(nèi)存空間: 保存每個(gè)對象的的具體屬性內(nèi)容。 (3)全局?jǐn)?shù)據(jù)區(qū): 保存static類型的屬性。 (4)全局代碼區(qū):保存所有方法的定義,構(gòu)造方法,構(gòu)造方法是定義在類中的一種特殊的方法,在創(chuàng)建對象時(shí)被系統(tǒng)自動(dòng)調(diào)用,主要完成對象的初始化,即為對象的成員變量賦初值。對于Java語言中每個(gè)類,系統(tǒng)將提供缺省的不帶任何參數(shù)的構(gòu)造方法。如果程序中沒有顯示地定義類的構(gòu)造方法,則創(chuàng)建對象時(shí)系統(tǒng)會(huì)調(diào)用缺省的構(gòu)造方法,一旦程序中定義

16、了構(gòu)造方法,系統(tǒng)將不再提供該缺省的構(gòu)造方法。 構(gòu)造方法具有以下特點(diǎn): (1)構(gòu)造方法名必須和類名完全相同,類中其他成員方法不能和類名相同。 (2)構(gòu)造方法沒有返回值類型,也不能返回void類型。其修飾符只能是訪問控制修飾符,即public、private、protected中的任一個(gè)。 (3)構(gòu)造方法不能直接通過方法名調(diào)用(顯式調(diào)用),必須通過new運(yùn)算符在創(chuàng)建對象時(shí)自動(dòng)調(diào)用。 (4)一個(gè)類可以有任意個(gè)構(gòu)造方法,不同的構(gòu)造方法根據(jù)參數(shù)個(gè)數(shù)的不同或參數(shù)類型的不同進(jìn)行區(qū)分,稱之為構(gòu)造方法的重載。 (5)構(gòu)造方法可在類中由用戶定義,若用戶沒有定義,系統(tǒng)將自動(dòng)生成一個(gè)空構(gòu)造方法。如 public Em

17、ployee( ),舉例3-2 ConstructorDemo .java,class Person private String name; private int age; public Person() = 張三; this.age = 18; public Person(int age) this.age = age; public Person(String name, int age) = name; this.age = age; public int getAge() return age; public void setAge(int

18、age) this.age = age; public String getName() return name; public void setName(String name) = name;,程序運(yùn)行結(jié)果: 張三 is 18 years old 張三 is 18 years old 王五 is 21 years old,public class ConstructorDemo public static void main(String args) Person a = new Person(); Person b = new Person(); Person c =

19、 new Person(王五, 21); System.out.println(a.getName() + is + a.getAge() + years old); System.out.println(b.getName() + is + b.getAge() + years old); System.out.println(c.getName() + is + c.getAge() + years old);,3.2.4 繼承,子類的創(chuàng)建 成員變量的隱藏和方法的覆蓋 構(gòu)造方法的繼承 多態(tài),子類的創(chuàng)建,Java中的繼承通過extends關(guān)鍵字實(shí)現(xiàn),創(chuàng)建子類一般形式如下: class 類名

20、extends 父類名 子類體 子類可以繼承父類的所有特性,但其可見性,由父類成員變量、方法的修飾符決定。對于被private修飾的類成員變量或方法,其子類是不可見的,也即不可訪問;對于定義為默認(rèn)訪問(沒有修飾符修飾)的類成員變量或方法,只有與父類同處于一個(gè)包中的子類可以訪問;對于定義為public或protected 的類成員變量或方法,所有子類都可以訪問,成員變量的隱藏和方法的覆蓋,子類中可以聲明與父類同名的成員變量,這時(shí)父類的成員變量就被隱藏起來了,在子類中直接訪問到的是子類中定義的成員變量。 子類中也可以聲明與父類相同的成員方法,包括返回值類型、方法名、形式參數(shù)都應(yīng)保持一致,稱為方法的

21、覆蓋,super 的使用,如果在子類中需要訪問父類中定義的同名成員變量或方法,需要用的關(guān)鍵字super。Java中通過super來實(shí)現(xiàn)對被隱藏或被覆蓋的父類成員的訪問。super 的使用有三種情況: 訪問父類被隱藏的成員變量和成員方法; super.成員變量名; 調(diào)用父類中被覆蓋的方法,如: super.成員方法名(參數(shù)列 ); 調(diào)用父類的構(gòu)造方法,如: super(參數(shù)列表); super( )只能在子類的構(gòu)造方法中出現(xiàn),并且永遠(yuǎn)都是位于子類構(gòu)造方法中的第一條語句,例3-3 InheritDemo.java,package InheritDemo; class Person private

22、String name; private int age; public int getAge() return age; public void setAge(int age) this.age = age; public String getName() return name; public void setName(String name) = name; public void move() System.out.println(Person move); class Student extends Person private float weight; / 子

23、類新增成員 public float getWeight() return weight; public void setWeight(float weight) this.weight = weight; public void move() / 覆蓋了父類的方法 move() super.move(); / 用super調(diào)用父類的方法 System.out.println(Student Move);,public class InheritDemo1 public static void main(String args) Student stu = new Student(); stu

24、.setAge(18); stu.setName(張三); stu.setWeight(85); System.out.println(stu.getName() + is + stu.getAge() + years old); System.out.println(weight: + stu.getWeight(); stu.move();,程序運(yùn)行結(jié)果: 張三 is 18 years old weight: 85.0 Person move Student Move,構(gòu)造方法的繼承,子類對于父類的構(gòu)造方法的繼承遵循以下的原則: 子類無條件地繼承父類中的無參構(gòu)造方法。 若子類的構(gòu)造方法中沒

25、有顯示地調(diào)用父類的構(gòu)造方法,則系統(tǒng)默認(rèn)調(diào)用父類無參構(gòu)造方法。 若子類構(gòu)造方法中既沒有顯示地調(diào)用父類的構(gòu)造方法,且父類中沒有無參構(gòu)造方法的定義,則編譯出錯(cuò)。 對于父類的有參構(gòu)造方法,子類可以在自己的構(gòu)造方法中使用super關(guān)鍵字來調(diào)用它,但必須位于子類構(gòu)造方法的第一條語句。子類可以使用this(參數(shù)列表) 調(diào)用當(dāng)前子類中的其他構(gòu)造方法,例3-4 InheritDemo2.java,class SuperClass SuperClass() System.out.println(調(diào)用父類無參構(gòu)造方法); SuperClass(int n) System.out.println(調(diào)用父類有參構(gòu)造方法

26、: + n ); class SubClass extends SuperClass SubClass(int n) System.out.println(調(diào)用子類有參構(gòu)造方法: + n ); SubClass() super(200); System.out.println(調(diào)用子類無參構(gòu)造方法);,public class InheritDemo2 public static void main(String arg) SubClass s1 = new SubClass(); SubClass s2 = new SubClass(100);,程序運(yùn)行結(jié)果: 調(diào)用父類有參構(gòu)造方法:200

27、調(diào)用子類無參構(gòu)造方法 調(diào)用父類無參構(gòu)造方法 調(diào)用子類有參構(gòu)造方法:100,多態(tài),多態(tài)的實(shí)現(xiàn)必須具備三個(gè)條件: 必須存在繼承。 必須有方法的覆蓋。 必須存在父類對象的引用指向子類的對象。 當(dāng)使用父類對象的引用指向子類的對象,Java的多態(tài)機(jī)制根據(jù)引用的對象類型來選擇要調(diào)用的方法,由于父類對象引用變量可以引用其所有的子類對象,因此Java虛擬機(jī)直到運(yùn)行時(shí)才知道引用對象的類型,所要執(zhí)行的方法需要在運(yùn)行時(shí)候才確定,而無法在編譯時(shí)候確定,例3-5 向上轉(zhuǎn)型 UpcastDemo.java,class A void aMthod() System.out.println(Superclass-aMthod

28、); class B extends A public void aMthod() System.out.println(Childrenclass-aMthod); / 覆蓋父類方法 void bMethod() System.out.println(Childrenclass-bmethod); / B類定義了自己的新方法,public class UpcastDemo public static void main(String args) A a = new B(); / 向上轉(zhuǎn)型 a.aMthod();,例3-6 向下轉(zhuǎn)型 DowncastDemo.java,class A void

29、 aMthod() System.out.println(A method); class B extends A void bMethod1() System.out.println(B method 1); void bMethod2() System.out.println(B method 2);,public class DowncastDemo public static void main(String args) A a1 = new B(); / 向上轉(zhuǎn)型 a1.aMthod(); / 調(diào)用父類aMthod(),a1遺失B類方法bMethod1()、bMethod2() B

30、b1 = (B) a1; / 向下轉(zhuǎn)型,編譯無錯(cuò)誤,運(yùn)行時(shí)無錯(cuò)誤 b1.aMthod(); / 調(diào)用父類方法 b1.bMethod1(); / 調(diào)用子類方法 b1.bMethod2(); / 調(diào)用子類方法 A a2 = new A(); B b2 = (B) a2; / 向下轉(zhuǎn)型,編譯無錯(cuò)誤,運(yùn)行時(shí)將出錯(cuò) b2.aMthod(); b2.bMethod1(); b2.bMethod2();,舉例3-6 AbstractDemo.java,abstract class Animal4 String name; Animal4(String name) =name; void g

31、etname() System.out.println(Animals name is +name); abstract void move();,class Dog extends Animal4 int age; Dog(String name,int age) super(name); this.age=age; void move() System.out.println(Dog is running!); void getage() System.out.println(Dog is +age+” years old”); class AbstractDemo public stat

32、ic void main(String args) Dog d=new Dog(wangwang,5); d.move(); d.getname(); d.getage();,程序運(yùn)行結(jié)果: Dog is running! Animals name is wangwang Dog is 5 years old,3.2.5 抽象類和接口,抽象類 接口 final關(guān)鍵字,3.2.6 包,一般格式如下: abstract class 類名 類體 說明: 抽象類是不能直接實(shí)例化對象的類。也即抽象類不能使用new運(yùn)算符去創(chuàng)建對象。 抽象類一般包括一個(gè)或幾個(gè)抽象方法。所謂抽象方法需在abstract修飾符

33、進(jìn)行修飾,抽象方法只有方法的聲明部分,沒有具體的方法實(shí)現(xiàn)部分。抽象類的子類必須重寫父類的抽象方法,才能實(shí)例子化,否則子類也是一個(gè)抽象類。 抽象類中不一定包含抽象方法,但是包含抽象方法的類必須說明為抽象類,接 口,單重繼承,接口,接口的定義,接口定義的一般形式為: 訪問控制符 interface 類型標(biāo)識符 final 符號常量名n = 常數(shù); 返回值類型 方法名(參數(shù)列表); 說明: 接口中的成員變量默認(rèn)為public. static.final,必須被顯示地初始化,修飾符可以省略。 接口中的成員方法只能是抽象方法,默認(rèn)為 public.abstract,修飾符可以省略。 接口不能被實(shí)例化,必

34、須通過類來實(shí)現(xiàn)接口,接口的實(shí)現(xiàn),class 類名extends 父類名 implements 接口1,接口名2 /類體 在實(shí)現(xiàn)接口的類中,一般必須覆蓋實(shí)現(xiàn)所有接口中聲明的方法,除非將實(shí)現(xiàn)的類聲明為abstract類,并將未實(shí)現(xiàn)的方法聲明為抽象方法。在3-6中,Ant類繼承了Insect類同時(shí)實(shí)現(xiàn)了Flyanimal接口;Pigeon類繼承了Bird類同時(shí)實(shí)現(xiàn)了Flyanimal接口,例3-8 InterfactDemo.java,interface Flyanimal void fly(); class Insect int legnum=6; class Bird int legnum=2;

35、 void egg(); class Ant extends Insect implements Flyanimal public void fly() System.out.println(Ant can fly);,class Pigeon extends Bird implements Flyanimal public void fly() System.out.println(pigeon can fly); public void egg() System.out.println(pigeon can lay eggs ); public class InterfactDemo pu

36、blic static void main(String args) Ant a=new Ant(); a.fly(); System.out.println(Ants legs are + a.legnum); Pigeon p= new Pigeon(); p.fly(); p.egg();,程序運(yùn)行結(jié)果: Ant can fly Ants legs are 6 pigeon can fly pigeon can lay eggs,接口和抽象類的比較,抽象類和接口都可以有抽象方法。 接口中只可以有常量,不能有變量;而抽象類既可以有常量,也可以有變量。 接口中只可以有抽象方法,抽象類中既可以

37、有抽象方法,也可以非抽象方法,3.2.6 包,一般格式如下: abstract class 類名 類體 說明: 抽象類是不能直接實(shí)例化對象的類。也即抽象類不能使用new運(yùn)算符去創(chuàng)建對象。 抽象類一般包括一個(gè)或幾個(gè)抽象方法。所謂抽象方法需在abstract修飾符進(jìn)行修飾,抽象方法只有方法的聲明部分,沒有具體的方法實(shí)現(xiàn)部分。抽象類的子類必須重寫父類的抽象方法,才能實(shí)例子化,否則子類也是一個(gè)抽象類。 抽象類中不一定包含抽象方法,但是包含抽象方法的類必須說明為抽象類,包 機(jī) 制,包機(jī)制引入的作用體現(xiàn)在以下幾個(gè)方面: 能夠?qū)嵤┰L問權(quán)限的控制。 利用包可以區(qū)分名字相同的類。在同一包中不允許出現(xiàn)同名類,不同包中可以存在同名類。 利用包可以對于不同的類文件

溫馨提示

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

最新文檔

評論

0/150

提交評論