




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、面向?qū)ο蟪绦蛟O(shè)計與系統(tǒng)開發(fā)第一章 面向?qū)ο箝_發(fā)基本概念2驅(qū)動任務(wù)一 用Java語言描述一個長方形類,其有長和寬兩種屬性,并且能夠計算每一個長方形的面積和周長3目標(biāo)及知識點能夠使用Java語言定義類2理解類的概念114什么是類 方法: 是用來描述對象動態(tài)特征的一組操作 屬性: 是用來描述對象靜態(tài)特 征的一組數(shù)據(jù) 類就是對事物的抽象和歸納,是相同標(biāo)準(zhǔn)事物的集合與抽象5如何創(chuàng)建類 人類性別名字能說話能思考眼睛鼻子手能吃飯能吃飯抽象出類 屬性方法6類圖7【思考】請畫出蘋果類的類圖、貓的類圖。8用Java語法構(gòu)建出類 Java中類定義語句的形式為:class 類名 / 類頭的定義/* 類體的定義*/成員
2、變量聲明; 成員方法定義; 其中,class是Java語言中定義類時必須使用的關(guān)鍵字。 “類名”是為這個類取的名,應(yīng)書寫為Java語言合法的標(biāo)識符。大括號中是定義類體的地方,指明該類中包含的數(shù)據(jù)成員和成員方法 9【例1-1】定義一個名為Round的圓形類,其有半徑屬性,有求周長的方法。 class Round double radius; / 半徑 double perimeter() / 求圓形的周長return 2*3.14*radius; 步驟:1、定義類 2、定義半徑屬性 3、定義求周長的方法10任務(wù)實現(xiàn)123從功能需求中分析并抽象出類,做出類圖按照類圖將對應(yīng)的類的結(jié)構(gòu)構(gòu)建出來 實現(xiàn)出
3、類中的方法 定義一個長方形類,其有長和寬兩種屬性,并且能夠計算每一個長方形的面積和周長11驅(qū)動任務(wù)二 利用任務(wù)設(shè)計的矩形類,創(chuàng)建出一個長和寬分別為10和5的具體的長方形,并打印 12目標(biāo)及知識點對象和類的關(guān)系2用Java語言創(chuàng)建對象3使用對象的成員變量和方法4理解對象的概念1113什么是對象 在面向?qū)ο筌浖O(shè)計中,對象就是用來描述客觀事物的一個實體,它將現(xiàn)實中的事物變成了軟件世界中的具體東西,它們的創(chuàng)造者就是你程序員,你的軟件世界中有了這些東西,你就可以讓這些東西來完成你作為造物主所交予它們的任務(wù)。你所創(chuàng)造的軟件世界中,對象就是構(gòu)成你的世界的一個基本單位,其由一組屬性和對這組屬性進(jìn)行操作的一組
4、方法所組成 。14類和對象的關(guān)系類是具有相同屬性和行為的一組對象的總稱,它為屬于該類的全部對象提供了統(tǒng)一的抽象描述,其內(nèi)部包括屬性和行為兩個主要部分 姚明女人男人人鄧麗君宋祖英郭晶晶劉德華謝霆鋒關(guān)羽 類對象15對象創(chuàng)建對象創(chuàng)建的形式為:類名 對象名; 對象名 = new 類名(參數(shù)列表); 或者 類名 對象名 = new 類名(參數(shù)列表); 其中,“類名”指出了這個對象屬于哪個類,“對象名”是給這個對象取一個區(qū)別于其他對象的變量名。類名后面的圓括號指定了類的構(gòu)造方法(將在下一章詳細(xì)學(xué)習(xí))。這里new運算符是Java關(guān)鍵字,專門用于調(diào)用構(gòu)造方法來產(chǎn)生一個實體對象 例:創(chuàng)建一個Rectangle對
5、象Rectangle rect = new Rectangle (); 16對象創(chuàng)建訪問對象成員的一般形式為: 對象名.成員變量名 對象名.成員方法名(參數(shù)列表) 其中,“類名”指出了這個對象屬于哪個類,“對象名”是給這個對象取一個區(qū)別于其他對象的變量名。類名后面的圓括號指定了類的構(gòu)造方法(將在下一章詳細(xì)學(xué)習(xí))。這里new運算符是Java關(guān)鍵字,專門用于調(diào)用構(gòu)造方法來產(chǎn)生一個實體對象 例:訪問對象rect的數(shù)據(jù)成員width并賦值10 rect.width = 10; 17public static void main (String args) Round r = new Round();
6、/ 聲明并實例化圓形對象r r.radius = 10; / 訪問成員變量并賦值 double p = r. perimeter(); / 調(diào)用成員方法求周長 System.out.println(半徑+r.radius+的圓的周長是: + p);例:利用例1-1定義的圓形類Round,計算半徑為10的 一個具體圓的周長 18長 public static void main(String args) Round r1=new Round (); / 聲明并實例化Round對象r1 Round r2=new Round (); / 聲明并實例化Round對象r2 / 給每個對象的半徑屬性賦值
7、r1.radius = 10; r2.radius = 20; / 調(diào)用r1中perimeter()方法得到r1的周長并打印輸出 System.out.println(半徑+r1.radius+的圓的周長是: + r1.perimeter(); / 調(diào)用r2中perimeter()方法得到第二個長方形的面積并打印輸出 System.out.println(半徑+r2.radius+的圓的周長是: + r2.perimeter();例:利用例1-1中定義的圓形類Round,生成半徑為20、10的兩個對象,并計算每個對象的周長19任務(wù)實現(xiàn)123類的概念創(chuàng)建類的對象訪問對象,給對象屬性賦值20課堂總
8、結(jié) 類和對象的概念類和對象的關(guān)系對象成員的訪問面向?qū)ο蟪绦蛟O(shè)計與系統(tǒng)開發(fā)第2章 面向?qū)ο箝_發(fā)特點 22驅(qū)動任務(wù)一 將上一章中的矩形類進(jìn)行改造,為了對象中數(shù)據(jù)的安全性,其長、寬兩個屬性在本類創(chuàng)建的對象外不可訪問;同時要求當(dāng)矩形對象產(chǎn)生的時候就已經(jīng)有具體的長度和寬度,而不是在生成對象后再給長寬賦值。其保留了計算本身周長和面積的功能 23目標(biāo)及知識點類中setter和getter方法 2構(gòu)造方法 this、static關(guān)鍵字 3類及其成員的訪問控制修飾符 4類的封裝 1124類的封裝性 封裝(Encapsulation)就是把對象的屬性和行為結(jié)合成一個獨立的單位,并盡可能隱蔽對象的內(nèi)部細(xì)節(jié)。 25
9、Java中的包 Java包(package)就是具有一定相關(guān)性的Java文件的集合創(chuàng)建包26在包中創(chuàng)建類 package 包名1.包名2.包名3. ;27使用包使用import語句:import 包名1.類名或接口名; import 包名1.包名2.*; 直接使用包:java.util.ArrayList list = new java.util.ArrayList(); 28 類的訪問權(quán)限 一個類僅有兩個可能的訪問權(quán)限:默認(rèn)的和公有(public)的。當(dāng)一個類被聲明為public時,該類可被任何包的代碼訪問;如果一個類為默認(rèn)的訪問權(quán)限,那么僅能由同一包內(nèi)的其他代碼所訪問。29類成員的訪問權(quán)限
10、 Java類的成員變量和成員方法的訪問權(quán)限修飾符無類修飾符類成員修飾符privatedefaultprotectedpublic同一類同一個包不同包的子類不同包非子類30舉例說明/ 源文件Rectangle.javapackage com.bean; /本類屬于com包的bean子包下public class Rectangle / 該類的權(quán)限為public / 私有的成員變量 private double length; private double width; / 求長方形的面積,注意該方法權(quán)限 double area() return length * width; /*打印輸出,公共
11、的成員方法*/ public void display() / 調(diào)用當(dāng)前對象的成員變量System.out.println(長: + length + t寬: + width); / 調(diào)用當(dāng)前對象的成員方法System.out.println(長方形的面積是: + area(); 31舉例說明/ 源文件RectangleDemo.javapackage com.demo; / 該類屬于com.demo包下import com.bean.*; / 導(dǎo)入com.bean包中所有的類public class RectangleDemopublic static void main (String a
12、rgs)/ 調(diào)用帶參構(gòu)造方法創(chuàng)建一個長方形對象rectRectangle rect = new Rectangle();/ rect.width = 2; /private不允許類外部調(diào)用/ rect.length = 4; / private不允許類外部調(diào)用/ System.out.println(長方形的面積是: + rect.area(); / 默認(rèn)權(quán)限不同包的類不能調(diào)用 rect.display(); / 調(diào)用對象rect的成員方法32getter、setter方法 若需要在其他類中訪問私有成員,可以通過非私有的setter和getter方法來訪問。這樣的方法常命名為setXxx()和
13、getXxx(),分別實現(xiàn)對封裝數(shù)據(jù)的設(shè)置和讀取操作 public void setWidth(double w) / 設(shè)置長方形的寬 width = w; public double getWidth() / 獲取長方形的寬 return width; public void setLength(double l) / 設(shè)置長方形的長 length = l; public double getLength() / 獲取長方形的長 return length; 33類的構(gòu)造方法 構(gòu)造方法的一般形式如下 :修飾符 方法名(形式參數(shù)列表) / 方法體1、構(gòu)造方法名與類名相同。2、構(gòu)造方法不返回任何
14、值,也沒有返回類型。3、每一個類可以有零個或多個構(gòu)造方法,如果沒有寫構(gòu)造方法默認(rèn)存在一個沒有參數(shù)的構(gòu)造方法。4、構(gòu)造方法在創(chuàng)建一個類的對象時由系統(tǒng)自動地調(diào)用執(zhí)行,一般不能顯式地直接調(diào)用。34class Rectangle double length; / 長 double width; / 寬 / 帶參構(gòu)造方法,用于初始化長方形的長和寬public Rectangle(double w, double l) width = w; length = l; / 求長方形的面積 double area() return length * width; 【例2-2】繼續(xù)改造長方體類,使對象創(chuàng)建時能自動
15、初始化 長方形的尺寸。35public class RectangleDemopublic static void main (String args)/ 調(diào)用構(gòu)造方法初始化每個長方形對象Rectangle rect1 = new Rectangle(10,20); Rectangle rect2 = new Rectangle(3,6);double area; area = rect1.area(); / 調(diào)用area()方法得到第一個長方形的面積 System.out.println(第一個長方形的面積是: + area);area = rect2.area(); / 調(diào)用area()方
16、法得到第二個長方形的面積 System.out.println(第二個長方形的面積是: + area);36 this關(guān)鍵字 在程序中,可以在任何方法內(nèi)使用this來引用當(dāng)前的對象,this就指向了本身這個對象 / 帶參構(gòu)造方法,用于初始化長方形的長和寬 Rectangle(double w, double l) this.width = w; this.length = l; / 帶參構(gòu)造方法,用于初始化長方形的長和寬 Rectangle(double width, double length) this.width = width; / 使用this來訪問同名實例變量 this.lengt
17、h = length; 37this的使用場合 訪問當(dāng)前對象的數(shù)據(jù)成員。訪問當(dāng)前對象的成員方法 38。class Rectangle double length; / 長 double width; / 寬 / 帶參構(gòu)造方法,用于初始化長方形的長和寬 Rectangle(double width, double length) this.width = width; / this關(guān)鍵字表示當(dāng)前對象 this.length = length; / 求長方形的面積 double area() return this.length * this.width; / 打印輸出 void display(
18、) / 調(diào)用當(dāng)前對象的成員變量System.out.println(長: + this.length + t寬: + this.width); / 調(diào)用當(dāng)前對象的成員方法System.out.println(長方形的面積是: + this.area(); 【例2-3】在例2-2的基礎(chǔ)上修改Rectangle類的構(gòu)造方法,使其形式參數(shù)與成員變量名稱相同39static靜態(tài)成員-靜態(tài)類成員 被聲明為static的成員變量是靜態(tài)變量,也稱為類變量。靜態(tài)變量本質(zhì)上是全局變量。當(dāng)聲明該類的對象時,不生成static變量的副本,類的所有實例共享同一個static變量 被聲明為static的成員方法是靜態(tài)方
19、法,也稱為類方法。靜態(tài)方法有幾條限制:(1)它們僅可以調(diào)用其他static方法。(2)它們只能訪問static數(shù)據(jù)成員。(3)它們不能以任何方式引用this或super40static靜態(tài)成員-靜態(tài)代碼塊static / 程序塊 靜態(tài)代碼塊不是類的方法,沒有方法名、返回值和參數(shù)表。靜態(tài)代碼塊也與類方法一樣,不能使用實例變量及方法,也不能使用this或super關(guān)鍵字。 static塊(即靜態(tài)代碼塊),這個塊僅在該類被第一次加載時執(zhí)行一次。靜態(tài)代碼塊的語法格式:41public class UseStatic static int a = 3; / 靜態(tài)變量(類變量),并初始化 static i
20、nt b; / 靜態(tài)變量 int c = 10; / 實例變量 static void display(int x) / 靜態(tài)方法(類方法) System.out.println(x = + x); System.out.println(a = + a); System.out.println(b = + b); /System.out.println(c = + c);/靜態(tài)方法不能直接調(diào)用非靜態(tài)成員 static / 靜態(tài)代碼塊 System.out.println(靜態(tài)代碼塊執(zhí)行開始); b = a * 4; / 初始化靜態(tài)變量b public static void main(Stri
21、ng args) display(42); / 直接調(diào)用靜態(tài)方法 【例2-4】下面示例顯示的類有方法、幾個static變量和一個static初始塊:42任務(wù)實現(xiàn)123分析抽象出類按照類圖編制出類框架實現(xiàn)出類中的方法 45定義主類創(chuàng)建類的對象43驅(qū)動任務(wù)二 設(shè)計一個人類,其有姓名、年齡和身份(默認(rèn)值為“工人”)三個屬性,一個帶參構(gòu)造方法,會說話、會工作等行為。然后設(shè)計學(xué)生類和教師類,這兩個類屬性和方法和人類完全一致,只是學(xué)生類多了學(xué)號這個屬性,學(xué)生的身份為“學(xué)生”;教師類還包含有教師號這個屬性,教師的身份為“教師”。并生成若干個學(xué)生對象和教師對象,分別輸出各對象的信息。44目標(biāo)及知識點成員變量的
22、隱藏 2成員方法的重寫 3super關(guān)鍵字 4類的繼承1145類的繼承性 繼承(Inheritance)是一種聯(lián)結(jié)類與類的層次模型。繼承性是指子類擁有父類的屬性和行為。繼承意味著“自動地?fù)碛小?,即子類中不必重新定義已在父類中定義過的屬性和行為,而它卻自動地、隱含地?fù)碛衅涓割惖膶傩耘c行為。 46類繼承的實現(xiàn) Java中的繼承是通過extends關(guān)鍵字來實現(xiàn)的,在定義新類時使用extends關(guān)鍵字指明新類的父類,就在兩個類之間建立了繼承關(guān)系。47類繼承的實現(xiàn)-子類聲明修飾符 class 子類名 extends 父類名 / 類頭的定義成員變量聲明; / 類體的定義成員方法定義; 一般地,在類聲明中,
23、加入extends子句來創(chuàng)建一個類的子類。extends后即為父類名,若父類名又是某個類的子類,則新定義的類也是其父 48類繼承的實現(xiàn)-類繼承的傳遞性 類繼承具有傳遞性,即子類繼承父類的所有非私有成員,也繼承父類的父類直至祖先所有的非私有成員。繼承是傳遞的,這正體現(xiàn)了大自然中特殊與一般的關(guān)系?!纠?-5】設(shè)計一個長方體類Cube,它繼承自例矩形類Rectangle,它除了有矩形類的長、寬屬性和計算面積的方法外還有表示長方體高的成員變量height、以及計算長方體體積的方法volume()。 / 矩形類class Rectangle double length; / 長double width;
24、 / 寬double area() / 求長方形的面積return length * width;void setDim(double w, double l) / 設(shè)置長方形的長和寬width = w;length = l; / 長方體類,繼承于Rectangle類class Cube extends Rectangle double height; / 高public Cube(double width, double length, double height) / 構(gòu)造方法this.width = width;this.length = length;this.height = hei
25、ght;double volume() / 求長方體的體積return area() * height; /主類(擁有main方法的類)public class Test public static void main(String args) Cube c = new Cube(1, 2, 3); System.out.println(長: + c.length + t寬: + c.width + t高: + c.height);System.out.println(長方體的體積: + c.volume(); 成員的覆蓋 如果有一個名為B的子類和一個名為A的父類,它們出現(xiàn)了相同的成員時,在子
26、類B中直接訪問同名成員會得到什么結(jié)果? / 父類Aclass A int x = 100;public void display() System.out.println(執(zhí)行父類A的display()方法);System.out.println(SuperClass A: + x);/ 子類B,繼承于父類Aclass B extends A int x = 200; / 在子類B中父類A的同名變量x被隱藏public void display() / 方法的重寫System.out.println(執(zhí)行子類B的display()方法);System.out.println(SubClass
27、B: + x); / 直接輸出為子類變量xpublic static void main(String args) B b = new B();b.display();執(zhí)行結(jié)果是?執(zhí)行子類B的display()方法SubClass B: 20051任務(wù)實現(xiàn)123分析抽象出類按照類圖編制出類框架實現(xiàn)類中的方法45定義主類創(chuàng)建類的對象 訪問對象52驅(qū)動任務(wù)三設(shè)計一個人類,有姓名、年齡兩個屬性,一個無參構(gòu)造方法(用于將屬性初始化為其默認(rèn)值),一個帶參構(gòu)造方法,會說話、會工作等行為。然后設(shè)計學(xué)生類和教師類,它們都是派生自人類的子類,其中學(xué)生類還包含有學(xué)號屬性,有自己的說話和工作方式;教師類還包含有教師
28、號屬性,也有自己的說話和工作方式。建立若干個學(xué)生對象和教師對象,分別輸出各對象的信息。53目標(biāo)及知識點方法的重載與重寫 2類的多態(tài)特性 1154重載 在Java中,同一個類中如果同時存在兩個以上的方法有同一個名字,在這種情況下,我們說方法被重載了,這個過程被稱為方法重載。55【例2-10】使用類的重載構(gòu)造方法生成不同的長方形對象,計算各長方形的面積。class Rectangle double length; / 長 double width; / 寬 / 定義三個重載的構(gòu)造方法 public Rectangle() / 無參構(gòu)造方法 length = 1.0;width = 1.0; pub
29、lic Rectangle(double length) / 帶參構(gòu)造方法 this.length = length;this.width = length; public Rectangle(double length, double width)/帶參構(gòu)造方法 this.length = length;this.width = width; public double area() / 求長方形的面積 return length * width; public void display() System.out.println(長方形的面積是: + this.area(); public
30、class RectangleDemopublic static void main (String args) Rectangle rect1 = new Rectangle(); / 調(diào)用無參構(gòu)造方法 rect1.display(); Rectangle rect2 = new Rectangle(6); rect2.display(); Rectangle rect3 = new Rectangle(10,20); rect3.display();長方形的面積是:1.0長方形的面積是:36.0長方形的面積是:200.056重寫 當(dāng)同名方法同時存在于子類和父類中時,對于子類來說就是將繼承的
31、父類的方法重新寫過了,實現(xiàn)方式完全和父類無關(guān)。當(dāng)調(diào)用子類的方法時,運行的是子類重新改寫的方法,而不是父類的方法。57【例2-11】重寫方法的調(diào)用。class A void display() System.out.println(這是父類的方法);void print() System.out.println(As method print() called!);class B extends A / 子類B派生自父類Avoid display() / 方法的重寫System.out.println(這是子類的方法);public class Test public static void m
32、ain(String args) A a1 = new A(); / a1引用類A的實例 a1.display(); a1.print(); A a2 = new B(); / a2引用類B的實例,子類對象可以看做父類對象 a2.display(); a2.print();結(jié)果:這是父類的方法As method print() called!這是子類的方法As method print() called!58方法重寫時要遵循三個原則:重寫方法的返回類型必須與它所重寫的方法相同。重寫方法不能比它所重寫的方法有更嚴(yán)格的訪問權(quán)限,也就是子類private方法不能覆蓋掉父類public的方法。重寫方法
33、不能比它所重寫的方法拋出更多的異常。59任務(wù)實現(xiàn)123分析抽象出類按照類圖編制出類框架實現(xiàn)類中的方法45定義主類創(chuàng)建類的對象 訪問對象60課堂總結(jié) 類的封裝類的繼承多態(tài)面向?qū)ο蟪绦蛟O(shè)計與系統(tǒng)開發(fā)第3章 面向?qū)ο笤O(shè)計思想 62驅(qū)動任務(wù)一 創(chuàng)建一個抽象類Animal,它包含一個abstract的sound()方法;派生一個子類Dog,實現(xiàn)父類抽象方法sound();創(chuàng)建子類Dog對象,然后調(diào)用它的sound()方法。63目標(biāo)及知識點定義和使用抽象類2final關(guān)鍵字的使用3抽象類的概念1164抽象類 如果一個類中沒有包含足夠的信息來描繪一個具體的對象,這樣的類就是抽象類 定義一個抽象類的格式如下
34、abstract class AbstractClassNamepublic abstract class Shapepublic abstract double area();/抽象方法public abstract double volume();/抽象方法 當(dāng)一個類被定義成abstract類時,表示一個抽象的概念,它不能用new關(guān)鍵字實例化對象,例如上面定義的Shape類就是一個抽象類,只有被繼承并在子類中重寫其抽象方法,它才有意義。 65【例3-1】 定義一個代表形狀的抽象類,并派生出圓柱體類和長方體類,計算底面半徑為2高為3的圓柱體體積和長、寬、高分別為3、2、4的長方體體積。 /定
35、義一個形狀抽象類abstract class Shapedouble radius,length,width,height;abstract double vol();/求體積的抽象方法Shape(double r,double h)/對半徑和高進(jìn)行初始化的構(gòu)造方法radius = r;height = h;Shape(double l,double w,double h)/對長寬高進(jìn)行初始化的構(gòu)造方法length = l;width = w;height = h;/*圓柱體類*/class Circle extends ShapeCircle(double r,double h)super(
36、r,h);double vol()/重寫父類抽象方法return(3.1416*radius*radius*height); /*長方體類*/class Rectangle extends ShapeRectangle(double l,double w,double h)super(l,w,h);double vol()/重寫父類抽象方法return (length*width*height);/*主類*/public class AbstractClassDemo public static void main(String args) Circle c = new Circle(2,3)
37、; Rectangle r = new Rectangle(3,2,4); System.out.println(圓柱體體積 = + c.vol(); System.out.println(長方體體積 = + r.vol();結(jié)果:圓柱體體積37.6992長方體體積24.0【思考】abstract修飾的類一定有abstract修飾的方法嗎?Java面向?qū)ο筌浖_發(fā)66最終類-final類 有一種類是不能派生出子類的,我們叫這種類為最終類。即我們用final來修飾的類。public final class Test1 Java面向?qū)ο筌浖_發(fā)67最終類-final類 如果一個類不允許其子類覆蓋某
38、個方法,則可以把這個方法聲明為final方法 public final void f2() System.out.println(f2);Java面向?qū)ο筌浖_發(fā)68【例3-2】 使用final方法的例子class Test1 public void f1() System.out.println(f1);/ 無法被子類覆蓋的方法public final void f2() System.out.println(f2);public class Test2 extends Test1public void f1() System.out.println(Test1父類方法f1被覆蓋!);pub
39、lic static void main(String args) Test2 t = new Test2();t.f1();t.f2(); / 調(diào)用從父類繼承過來的final方法結(jié)果:Test1父類方法f1被覆蓋!f269任務(wù)實現(xiàn)123分析類及關(guān)系 定義抽象類Animal Dog類利用構(gòu)造方法為type屬性賦值 45Dog類實現(xiàn)Animal的sound() main方法進(jìn)行測試 70驅(qū)動任務(wù)二 有一個接口AddImp規(guī)定了有求和的方法sum();另外一個SubImp接口規(guī)定了有減法運算的方法subtract();再聲明一個接口Calculatable繼承于以上兩個接口。創(chuàng)建Calculato
40、r類實現(xiàn)接口Calculatable,并生成對象測試該對象的加減功能。71目標(biāo)及知識點接口的實現(xiàn) 2接口的繼承 3多接口4接口的定義1172接口的定義在Java語言中,用關(guān)鍵字interface來定義接口。接口與類有相似的結(jié)構(gòu),其定義格式如下:修飾符 interface 接口名 extends父接口名/接口體 73接口的定義例3-3Interface ObjectArea double PI =3.14; double area(double r); 注意:接口和普通類不一樣的是它的方法默認(rèn)是抽象和公共的,屬性默認(rèn)是常量,靜態(tài)的和公共的74接口的實現(xiàn) 若一個類想統(tǒng)一在某個接口的規(guī)范下,想具有這
41、個接口的”身份”,就需要實現(xiàn)這個接口。格式如下:Class 類名 implements 接口名接口的實現(xiàn)75例3-4class Circle implements ObjectAreapublic double area(double r)/重寫return PI*r*r;注意:若實現(xiàn)接口的類不是抽象類,則該類必須實現(xiàn)指定接口的所有抽象方法。方法頭部應(yīng)該與接口中的定義完全一致,即有完全相同的方法名、參數(shù)表和返回值。76接口繼承 接口也可以通過關(guān)鍵字extends繼承其他接口。子接口將繼承父接口中所有的常量和抽象方法。Interface 接口名 extends 接口名 接口繼承77例3-5:in
42、terface AString a = 接口A中常量;void showA();interface B extends AString b = 接口B中常量;void showB();interface C extends BString c = 接口C中常量;void showC();class InterfaceABC implements Cpublic void showA()/重寫A接口中的方法System.out.println(a);public void showB()/重寫B(tài)接口中的方法System.out.println(b);public void showC()/重寫C
43、接口中的方法System.out.println(c);實現(xiàn)多接口78一個類可以同時實現(xiàn)多個接口,接口名之間用逗號間隔。例3-6:interface A void meth1();interface B void meth2();class MyClass implements A,B public void meth1() System.out.println(Implement meth1().); public void meth2() System.out.println(Implement meth2().); 79任務(wù)實現(xiàn)123分析接口及類關(guān)系創(chuàng)建接口實現(xiàn)接口45創(chuàng)建對象調(diào)用對象中
44、的方法完成具體功能80課堂總結(jié) 抽象類的定義和繼承接口的定義和實現(xiàn)面向?qū)ο蟪绦蛟O(shè)計與系統(tǒng)開發(fā)第4章 面向?qū)ο箝_發(fā)常用類82驅(qū)動任務(wù)一 定義一個字符串,它以空格、逗號(,)、點()和冒號(:)為分隔符,統(tǒng)計字符串有多少個單詞,并將它們輸出到屏幕上。Java面向?qū)ο筌浖_發(fā)83目標(biāo)及知識點StringBuffer類 2常用方法的使用3String類1184String類字符串構(gòu)造方法 String():構(gòu)造一個空字符串對象。String(char value):通過char數(shù)組構(gòu)造字符串對象。String(String original):構(gòu)造一個傳入的字符串的副本,該副本與傳入的字符串對象是兩個
45、不同的對象,雖然它們的內(nèi)容一樣。 String(StringBuffer buffer):通過StringBuffer對象來構(gòu)造字符串對象,可以利用這個方法來將StringBuffer對象轉(zhuǎn)變成String。String str1 = How do you do? ; / 直接賦值方式String str2 = new String(); /構(gòu)造一個空串,不是null String str3 = new String(“I am a student!”); / 通過已有字符串構(gòu)造一個新的字符串對象85String類字符串常用方法int length() :返回當(dāng)前字符串長度。boolean e
46、quals(Object Object) :當(dāng)Object不為空并且與當(dāng)前String對象一樣,返回true;否則,返回false。String concat(String str) :將該String對象與str連接在一起返回一個新字符串。char charAt(int index) :取字符串中的某一個字符,其中的參數(shù)index指的是字符串中字符的序數(shù)。該序數(shù)從0開始。String s = How do you do? ;int x = s.length();/x的值為:13 String s = AB;boolean x = s.equals(AB);/x的值為true boolean
47、y = s.equals(BA);/y的值為falseString s1=to;String s2=get;String s3=her;System.out.print(s1.concat(s2.concat(s3); / 輸 出結(jié)果為:togetherString s = new String(Welcome to Java World!);System.out.println(s.charAt(5); / 輸出結(jié)果為:m86String類字符串int indexOf(int ch) :從字符串中匹配參數(shù)中的字符,返回第一次匹配字符位置。int indexOf(int ch, int fro
48、mIndex) :從fromIndex這個參數(shù)表示的位置起查找,返回第一次匹配字符位置。int indexOf(String str) :返回匹配的字符串第一次出現(xiàn)的位置。int indexOf(String str,int fromIndex):從fromIndex String s = new String(write once, run anywhere!);String ss = new String(run);System.out.println(s.indexOf(r); / 輸出結(jié)果為:1System.out.println(s.indexOf(r,2); / 輸出結(jié)果為:12S
49、ystem.out.println(s.indexOf(ss); / 輸出結(jié)果為:1287String類字符串String substring(int beginIndex) :取子串操作,返回從beginIndex位置開始到結(jié)束的子字符串。String substring(int beginIndex, int endIndex) :取從beginIndex位置開始到endIndex位置的子字符串。String s = 我是中國人;String str1 = s.substring(2);/str1的值為“中國人”String str2 = s.substring(2,4);/str2的值為
50、“中國”88String類字符串String replace(char oldChar, char newChar) :將字符串中所有的字符oldChar替換成newChar。String replace(String oldString, String newString):將字符串中所包含的oldString子串全部替換為newString。String s = abcbabcd;String str1 = s.replace(b, d);/str1的值“adcdadcd”String str2 = s.substring(ab,jk);/str2的值為“jkcbjkcd”89String
51、類字符串String trim():去除字符串左右兩邊空格。String toLowerCase() :將字符串轉(zhuǎn)換成小寫。String toUpperCase() :將字符串轉(zhuǎn)換成大寫。String s = abc ;String str1 = s.trim();/str1的值“abc”String s = abcABC;String str1 = s.toLowerCase();/str1的值“abcabc”String str2 = s.toUpperCase();/str2的值為“ABCABC”90StringBuffer類字符串構(gòu)造函數(shù)StringBuffer():構(gòu)造一個沒有任何字
52、符的字符串對象。StringBuffer(int length):構(gòu)造一個長度為length的字符串對象。StringBuffer(String str):以str為初始值構(gòu)造一個StringBuffer類對象。91StringBuffer類字符串常用方法 public StringBuffer append(String b) :是向字符串緩沖區(qū)“追加”元素,而且這個“元素”參數(shù)可以是布爾量、字符、字符數(shù)組、雙精度數(shù)、浮點數(shù)、整型數(shù)、長整型數(shù)、對象類型、字符串和StringBuffer類等。如果添加的字符超出了字符串緩沖區(qū)的長度,Java將自動進(jìn)行擴(kuò)充。 String s1 = This i
53、s a pencil; String s2 = box; StringBuffer sb = new StringBuffer(s1); System.out.println(sb.append(s2); / 結(jié)果為:This is a pencilboxJava面向?qū)ο筌浖_發(fā)92StringBuffer類字符串public StringBuffer insert(int offset, double d) :在當(dāng)前StringBuffer對象中插入一個元素,第一個參數(shù)offset表示插入位置,第二個參數(shù)d表要插入的數(shù)據(jù),這個“元素”參數(shù)可以是布爾量、字符、字符數(shù)組、雙精度數(shù)、浮點數(shù)、整型數(shù)
54、、長整型數(shù)、對象類型、字符串等。public StringBuffer delete(int start, int end) :刪除當(dāng)前StringBuffer對象中以索引號start開始到end結(jié)束的子串,但不會刪除end處的字符。 StringBuffer sb=new StringBuffer(I am a student!); System.out.println(sb.insert(7,good );/輸出結(jié)果為:I am a good student!StringBuffer sb=new StringBuffer(I am a student);System.out.printl
55、n(sb.delete(0,7); / 輸出結(jié)果為:student93StringBuffer類字符串public StringBuffer deleteCharAt(int index) :刪除指定位置的單個字符。public StringBuffer replace(int start, int end, String str) :替換當(dāng)前StringBuffer對象的字符串。從start開始,到end結(jié)束的位置替換成str。public StringBuffer reverse():將字符串翻轉(zhuǎn)。public String toString():將StringBuffer中的內(nèi)容放入一個
56、String對象中返回出來,我們可以利用這個方法實現(xiàn)StringBuffer到String的轉(zhuǎn)化。StringBuffer sb=new StringBuffer(too);System.out.println(sb.deleteCharAt(2); / 輸出結(jié)果為:to StringBuffer sb=new StringBuffer(I am a student.); System.out.println(sb.replace(7,14, teacher);/ 輸出結(jié)果為:I am a teacher StringBuffer sb = new StringBuffer(012345678
57、9); System.out.println(sb.reverse(); / 輸出結(jié)果為: 9876543210 StringBuffer sb = new StringBuffer(0123456789);String str = sb.toString();/str的值為“0123456789”94練習(xí)1、定義一個字符串str,其值為“重慶正大軟件職業(yè)技術(shù)學(xué)院”2、求字符串str長度3、求正在str中的位置95數(shù)據(jù)類型類 對應(yīng)于Java中的基本數(shù)據(jù)類型(long,int,short,byte,float,double,char,boolean都有一個對應(yīng)的數(shù)據(jù)類型類,封裝了對對應(yīng)基本數(shù)據(jù)類
58、型操作的一些方法 數(shù)據(jù)類型類與基本數(shù)據(jù)類型對照表 96Integer類靜態(tài)域MAX_VALUE:通過類名可直接引用,得到該類型數(shù)據(jù)可以容納的最大值。MIN_VALUE:通過類名可直接引用,得到該類型數(shù)據(jù)可以容納的最小值。TYPE:通過類名可直接引用,得到該類對應(yīng)的基本數(shù)據(jù)類型關(guān)鍵字。System.out.println(Integer類可以容納的最大值: + Integer.MAX_VALUE ); System.out.println(Integer類對應(yīng)的基本數(shù)據(jù)類型:Integer.TYPE);97Integer類構(gòu)造函數(shù)Integer(int value):通過一個int類型數(shù)據(jù)構(gòu)造對
59、象。 Integer(String s):通過一個String的類型數(shù)據(jù)構(gòu)造對象。 Integer x = new Integer (123); /生成了一個值為123的Integer對象。Integer y = new Integer(1234); /生成了一個值為1234的Integer對象。98Integer類常用方法public int intValue():返回該整數(shù)對象的數(shù)值 public static int parseInt (String s):將數(shù)字字符串轉(zhuǎn)化為int數(shù)。public static Integer valueOf(String s):將字符串轉(zhuǎn)換成Integ
60、er數(shù)。public String toString():將Integer對象轉(zhuǎn)化為字符串。public static String toString(int d):將整型參數(shù)轉(zhuǎn)化為字符串。 Integer x = new Integer (123); /生成了一個值為123的Integer對象。int y = Value(); /y的值為123。int x = Integer.parseInt (1234); /將字符串1234轉(zhuǎn)變?yōu)閕nt型返回。int a=Integer.parseInt(123);int b=Integer.valueOf(678).intValue();long c=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2016-學(xué)年高中歷史 第五單元 法國民主力量與專制勢力的斗爭 第2課 拿破侖帝國的建立與封建制度的復(fù)辟教學(xué)設(shè)計 新人教版選修2
- 2024-2025學(xué)年高中政治 第二單元 人民當(dāng)家作主 第五課 我國的根本政治制度 1 人民代表大會:我國的國家權(quán)力機(jī)關(guān)教學(xué)設(shè)計 部編版必修3
- 吉林藝術(shù)學(xué)院《物聯(lián)網(wǎng)原理及應(yīng)用》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖南農(nóng)業(yè)大學(xué)東方科技學(xué)院《耳鼻咽喉科學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 河南科技大學(xué)《科學(xué)與工程計算方法》2023-2024學(xué)年第二學(xué)期期末試卷
- 四川鐵道職業(yè)學(xué)院《水產(chǎn)微生物學(xué)實驗》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海工藝美術(shù)職業(yè)學(xué)院《文本解讀與訓(xùn)練》2023-2024學(xué)年第一學(xué)期期末試卷
- 發(fā)布前期物業(yè)服務(wù)合同
- 雙方協(xié)議勞動合同
- 內(nèi)墻工程施工合同
- 藍(lán)豆云:2024酒店質(zhì)檢SOP及質(zhì)檢報告
- 16《海上日出》 任務(wù)型教學(xué)設(shè)計
- NB-T47013.3-2015承壓設(shè)備無損檢測第3部分:超聲檢測
- 大學(xué)《軍事理論》考試題庫及答案解析(10套)
- 云南省昭通市鎮(zhèn)雄縣2024年小升初數(shù)學(xué)自主招生備考卷含解析
- 車間劃線執(zhí)行標(biāo)準(zhǔn)
- 2023學(xué)校幼兒園懷舊“六一兒童節(jié)”(時光不老追憶童年)主題游園活動策劃案-47P
- 幼兒園課件《膽小先生》
- 校服供貨服務(wù)方案
- 家庭農(nóng)場經(jīng)營與管理-家庭農(nóng)場規(guī)劃創(chuàng)建
- 2024年湖南省懷化市中考數(shù)學(xué)一模試卷(含解析)
評論
0/150
提交評論