




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第4章 類和對(duì)象,理解面向?qū)ο缶幊?能夠熟練創(chuàng)建自己的類 使用屬性描述對(duì)象,定義對(duì)象的行為 構(gòu)造方法 對(duì)象的創(chuàng)建與使用 會(huì)用關(guān)鍵字this、static、final 包的定義和使用 封裝及類成員訪問權(quán)限控制討論 帶可變參數(shù)個(gè)數(shù)的方法,4.1 理解面向?qū)ο缶幊?面向?qū)ο蠹夹g(shù),正是利用對(duì)現(xiàn)實(shí)世界中對(duì)象的抽象和對(duì)象之間相互關(guān)聯(lián)和相互作用的描述來對(duì)現(xiàn)實(shí)世界進(jìn)行模擬,并且使其映射到目標(biāo)系統(tǒng)中。所以面向?qū)ο蟮奶攸c(diǎn)主要概括為封裝性、繼承性和多態(tài)性。 1.封裝性:是指對(duì)象的使用者通過預(yù)先定義的接口關(guān)聯(lián)到某一對(duì)象的服務(wù)和數(shù)據(jù) 時(shí),無需知道這些服務(wù)是如何實(shí)現(xiàn)的。即用戶使用對(duì)象時(shí)無需知道對(duì)象內(nèi)部的運(yùn)行細(xì)節(jié)。這樣,以
2、前所開發(fā)的系統(tǒng)中已使用的對(duì)象能夠在新系統(tǒng)中重新采用,減少了新系統(tǒng)中分析、設(shè)計(jì)和編程的工作量。 2.繼承性:新的對(duì)象類由繼承原有對(duì)象類的某些特性或全部特性而產(chǎn)生出來,原有對(duì)象類稱為基類(或超類、父類),新的對(duì)象類稱為派生類(或子類),派生類可以直接繼承基類的共性,又允許派生類發(fā)展自己的個(gè)性。繼承性簡化了對(duì)新的對(duì)象類的設(shè)計(jì)。 3.多態(tài)性:是指不同類型的對(duì)象可以對(duì)相同的激勵(lì)做出適當(dāng)?shù)牟煌鄳?yīng)的能力。多態(tài)性豐富了對(duì)象的內(nèi)容,擴(kuò)大了對(duì)象的適應(yīng)性。,4.1.1 類和對(duì)象的概念,類是創(chuàng)建對(duì)象的模版或藍(lán)圖,它可分為: 系統(tǒng)已經(jīng)存在的類(使用)、用戶自定義的類(創(chuàng)建); 類可以定義為數(shù)據(jù)和方法的集合。 每個(gè)對(duì)象
3、都有自己特定的屬性和行為; 類將有共同屬性和行為的對(duì)象抽象出數(shù)據(jù)模版,用類的成員變量模擬對(duì)象的屬性,用成員方法模擬對(duì)象的行為;,4.2 類的聲明,面向?qū)ο箝_發(fā)的兩大步驟: 1、分析組成問題的數(shù)據(jù),進(jìn)而抽象出數(shù)據(jù)模版從具體到抽象的過程; 2、由抽象出來的類生產(chǎn)對(duì)象,運(yùn)用對(duì)象間的消息傳遞解決問題從抽象到具體的過程。,例:定義一個(gè)名為Person的類,class Person public int age; / 成員變量 public String name; public Person() / 構(gòu)造方法 public void say() / 成員方法 public void eat() publ
4、ic static void main(String args) / 主方法 ,類修飾符列表,修飾符 class 類名 extends 超類名 implements 接口列表 類體; 類名的規(guī)范:描述類的用途;首字母大寫;多個(gè)單詞連寫,且每個(gè)單詞首字母大寫。 類體主要包含四部分內(nèi)容:成員變量、構(gòu)造方法、成員方法、主方法。,4.2.1 成員變量的聲明,修飾符 變量類型 變量名 = 值 所有成員變量,如果不附初值,都有默認(rèn)初值。,4.2.2 構(gòu)造方法的聲明,構(gòu)造方法的定義: 1、一般為public; 2、沒有返回類型,不寫void; 3、與類名同名; 4、不能直接調(diào)用,由new調(diào)用,創(chuàng)建對(duì)象; 5
5、、主要任務(wù):成員變量的初始化。 public 類名 () 方法體; ,public Person() age = 12; name = “zhangsan”; 如果一個(gè)類沒有構(gòu)造方法,系統(tǒng)會(huì)自動(dòng)創(chuàng)建一個(gè)無參的構(gòu)造方法。,4.2.3 成員方法的聲明,修飾符 返回值類型 方法名(參數(shù)列表) throws 異常類型列表 方法體; 成員方法命名規(guī)范與成員變量同,public void say() System.out.println(“我是” + name + “, 今年” + age + “歲”); ,4.2.4 主方法的聲明,程序從主方法開始運(yùn)行; 主方法的聲明只能是: public static
6、 void main(String args); 大部分類是沒有主方法的; 沒有主方法的類不能運(yùn)行。,4.3 對(duì)象的使用,4.3.1 對(duì)象的創(chuàng)建 創(chuàng)建對(duì)象時(shí),實(shí)際是調(diào)用、執(zhí)行了類的構(gòu)造方法,初始化成員變量; 如:Person p = new Person(); Java對(duì)象的創(chuàng)建,必須使用關(guān)鍵字new; p是類類型的變量,此處為Person類型; 如果沒有為類定義構(gòu)造方法,且創(chuàng)建對(duì)象時(shí)使用無參構(gòu)造方法,不會(huì)出錯(cuò); 對(duì)象名(即類變量)存放在棧中; 對(duì)象的屬性存放在堆中。,4.3.2 通過對(duì)象訪問成員,訪問對(duì)象的成員,用”.”操作符: public static void main(String
7、args) Person p = new Person(); String n = ; p.say (); System.out.println(p.age); ,4.3.3 給對(duì)象引用變量賦值,Person p1 = new Person(12, “zhangsan”); Person p2 = new Person(20, “l(fā)isi”); p1 = p2; System.out.println(“p1賦值后:”+p1.age); p1.age = 30; System.out.println(“p1修改后:”+p1.age); System.out.println(“p1修改
8、后:”+p2.age);,4.3.4 對(duì)象的清除,在Java中,對(duì)無用內(nèi)存空間的釋放由系統(tǒng)自動(dòng)完成,我們稱之為:垃圾回收機(jī)制(Garbage Collection); 當(dāng)某對(duì)象的引用計(jì)數(shù)器為0時(shí),則該對(duì)象占用的內(nèi)存空間將被回收。 一下幾種情況對(duì)象會(huì)變成垃圾: 1、Person p = new Person(); p=null; 2、new Person() (匿名對(duì)象); 3、for(int i=0; i1000; i+) Person p = new Person(); ,思考:,Public class x public Object m() Float o = new Float(3.1
9、4f); / 第3行 Float oa = new Float(); oa = o; / 第5行 o = null; / 第6行 oa = null; / 第7行 return o; 第3行的Float對(duì)象產(chǎn)生后,在哪一行可能被垃圾回收?,4.4 方法重載,同一類中,方法名相同,形式參數(shù)列表不同的多個(gè)方法之間構(gòu)成方法重載; 返回值類型可以相同也可以不相同; 形式參數(shù)列表不同是指:參數(shù)個(gè)數(shù)、參數(shù)類型或參數(shù)順序不同; 如: int max(int a, int b); float max(float a, int b); int max(int a, int b, int c); float ma
10、x(int a, float b); float max(float a, float b);,例:構(gòu)造方法的重載,public Person(int a, String n) age = a; name = n; public Person() age = 12; name = “zhangsan”; ,例,下面哪幾個(gè)方法是對(duì)ConstOver類的構(gòu)造方法的重載: a)ConstOver() b)protected int ConstOver() c)public ConstOver(int z, int y, int x) d)void ConstOver(byte x, byte y,
11、byte z) e)Public Object ConstOver(int x, int y, int z) 在相同包中,想讓一個(gè)類能引用另一個(gè)類的成員,達(dá)到這個(gè)目的最小的控制權(quán)限修飾符是: a) public b) privatec)protected d)不需要修飾符,4.5 關(guān)鍵字 this,指向隱式參數(shù)(表示當(dāng)前對(duì)象); class Person int age; String name; public Person(int age, String name) this.age = age; = name; ,調(diào)用類中別的構(gòu)造器。 class Person publ
12、ic Person() this(12, “zhangsan”); 與成員方法的調(diào)用不同,構(gòu)造方法的調(diào)用用: this(實(shí)參列表);,4.6 static關(guān)鍵字 4.6.1 static修飾成員變量,該變量存儲(chǔ)在靜態(tài)堆中,各對(duì)象共享它; 對(duì)于一些取值一定的屬性,可以節(jié)省空間; 可以用于計(jì)數(shù); 在類外可以用類名直接引用,不用創(chuàng)建對(duì)象,也叫類的屬性; 例: class StaticTest static int count = 0; StaticTest() count+; public static void main(String args) new StaticTest(); new Sta
13、ticTest(); new StaticTest(); System.out.println(StaticTest.count); ,4.6.2 static修飾方法,類的方法,在類外可以用類名直接引用; 引用類中一般方法、一般變量時(shí)需要?jiǎng)?chuàng)建該類的對(duì)象; 方便類外的使用,Math庫中的方法都是靜態(tài)方法; main方法必須是static的,可以自啟動(dòng)。 一般,為靜態(tài)屬性創(chuàng)建靜態(tài)方法使用。,思考:,public class Test private static int j = 0; public boolean methodB(int k) j += k; return true; publi
14、c void methodA(int i) boolean b = false; b = (i10) 求該程序的輸出。,4.7 final關(guān)鍵字,修飾變量:該變量成為常量,在聲明的同時(shí)賦初值,一般用final聲明的變量都同時(shí)聲明為static; 修飾方法:最終方法,不可以被子類中的方法覆蓋; 修飾類:最終類,不可以被繼承。,4.8 包,包的概念:包是一組類的集合; 包的作用:簡單說,其作用就像Windows中的文件夾,管理唯一的名字,但用法不全是。 Java類庫中常用的包,4.8.1 包的聲明,package com.xiwang.class8.lesson9; 包的聲明必須放在java中除注
15、釋以外的第一句; 帶包編譯格式: javac d 存放路徑 文件名(. 表示當(dāng)前路徑) 帶包編譯后的類,運(yùn)行時(shí)必須帶上包名: java 包名.類名 打包自動(dòng)創(chuàng)建的目錄不能理解為普通的系統(tǒng)目錄,它是類名的一部分。類名為: 包名.類名 在其他包中用打包的類時(shí),必須導(dǎo)入該類所在的包,或使用其全名。,4.8.2 使用包,使用import導(dǎo)入包中所有的類: import com.xiwang.class8.lesson9.* 使用import導(dǎo)入包中的某一個(gè)類: import com.xiwang.class8.lesson9.Person 導(dǎo)入包的語句必須放在類或接口的聲明前,包的聲明后; 導(dǎo)入包時(shí)只
16、能導(dǎo)入該包中的類,不能導(dǎo)入其子包; 對(duì)于不在當(dāng)前文件夾下的包,可以轉(zhuǎn)到其所在位置運(yùn)行,或設(shè)置classpath來運(yùn)行: set classpath=f:; %classpath% 命令行參數(shù)設(shè)置的classpath在命令提示符關(guān)閉后就不起作用了,要使它始終有用應(yīng)該使用第一章講的方法設(shè)置。,4.9 封裝與類成員訪問權(quán)限,封裝,簡單的說就是信息隱蔽,把數(shù)據(jù)和行為結(jié)合在一個(gè)類中,并對(duì)對(duì)象的調(diào)用者隱蔽數(shù)據(jù)的實(shí)現(xiàn)過程; 封裝的實(shí)現(xiàn):成員變量私有化,為訪問者提供公有的方法。 能達(dá)到最好的封裝效果的修飾符是:private,例:封裝,class Person private int age; private String name; public void setAge(int age) this.age = age; public int getAge() re
溫馨提示
- 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 鎮(zhèn)江環(huán)氧坡道地坪施工方案
- 安徽中考初三數(shù)學(xué)試卷
- 銅板幕墻施工方案
- 大理石電視墻金屬施工方案
- 五指山綠化排水板施工方案
- 嘉定區(qū)空調(diào)清洗施工方案
- 2025北京西城八年級(jí)(上)期末生物(教師版)
- 小區(qū)水電維修服務(wù)施工方案
- ?;髽I(yè)安全文化建設(shè)方案
- 推動(dòng)醫(yī)務(wù)人員隊(duì)伍建設(shè)的策略及實(shí)施路徑
- 涉網(wǎng)試驗(yàn)培訓(xùn)課件
- 典當(dāng)行行業(yè)報(bào)告
- 經(jīng)典成語故事葉公好龍
- 綠色金融案例分析實(shí)證分析報(bào)告
- 《幼兒園課程》第1章:幼兒園課程概述
- 實(shí)驗(yàn)室擴(kuò)項(xiàng)方案
- 起重吊裝施工重難點(diǎn)及管控措施
- (理實(shí))《Java程序設(shè)計(jì)》圖形用戶界面(GUI)設(shè)計(jì) 課件
- 建設(shè)工程質(zhì)量安全監(jiān)督工作流程圖
- 眼鏡學(xué)智慧樹知到課后章節(jié)答案2023年下溫州醫(yī)科大學(xué)
- 《封神演義》與道教神仙體系
評(píng)論
0/150
提交評(píng)論