




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、類和對(duì)象第1頁(yè),共34頁(yè),2022年,5月20日,8點(diǎn)28分,星期二2目標(biāo)理解 OOP概念理解 OOP編程的思路和方法掌握如何創(chuàng)建類和構(gòu)造對(duì)象掌握方法的重載會(huì)用關(guān)鍵字static、final。第2頁(yè),共34頁(yè),2022年,5月20日,8點(diǎn)28分,星期二3什么是 OOPOOP: Object Oriented Programing 面向?qū)ο缶幊淘贠OP中,程序由對(duì)象組成,這些對(duì)象具有某種屬性以及對(duì)象可執(zhí)行的某些操作 第3頁(yè),共34頁(yè),2022年,5月20日,8點(diǎn)28分,星期二4OOP編程思路首先確定要執(zhí)行的任務(wù)。根據(jù)任務(wù)的描述把類找出來(lái)。類確定之后,再去尋找類的方法。根據(jù)業(yè)務(wù)邏輯,使用類的實(shí)例(
2、也就是對(duì)象)的方法來(lái)完成任務(wù)。第4頁(yè),共34頁(yè),2022年,5月20日,8點(diǎn)28分,星期二5OOP與過(guò)程編程的不同過(guò)程編程的重點(diǎn)在于設(shè)計(jì)一系列的函數(shù)(或者說(shuō)算法)來(lái)解決某一問(wèn)題。過(guò)程編程先確定如何操作數(shù)據(jù),然后才確定采用什么樣的數(shù)據(jù)結(jié)構(gòu)。OOP把數(shù)據(jù)放在首位,然后才考慮在數(shù)據(jù)上操作的算法。第5頁(yè),共34頁(yè),2022年,5月20日,8點(diǎn)28分,星期二6Java程序設(shè)計(jì)Java程序就是類!“萬(wàn)物皆對(duì)象”, Java程序就是對(duì)象!第6頁(yè),共34頁(yè),2022年,5月20日,8點(diǎn)28分,星期二7總結(jié)OOP編程如何下手? 首先設(shè)計(jì)類,然后往每個(gè)類中添加方法,最后根據(jù)業(yè)務(wù)邏輯調(diào)用不同對(duì)象的各種方法來(lái)完成任務(wù)
3、第7頁(yè),共34頁(yè),2022年,5月20日,8點(diǎn)28分,星期二8類和對(duì)象 2-1對(duì)象表示現(xiàn)實(shí)世界中某個(gè)具體的事物。抽象是從特定的實(shí)例中抽取共同的性質(zhì)以形成一般化概念的過(guò)程。對(duì)象具有兩方面的含義: 在現(xiàn)實(shí)世界中:是客觀世界中的一個(gè)實(shí)體 在計(jì)算機(jī)世界中:是一個(gè)可標(biāo)識(shí)的存儲(chǔ)區(qū)域第8頁(yè),共34頁(yè),2022年,5月20日,8點(diǎn)28分,星期二9類和對(duì)象 2-2類是具有共同屬性和行為的對(duì)象的抽象。類可以定義為數(shù)據(jù)和方法的集合。類也稱為模板,因?yàn)樗鼈兲峁┝藢?duì)象的基本框架。類對(duì)象抽象實(shí)例化屬性或狀態(tài)操作或行為數(shù)據(jù)或變量方法封裝的實(shí)體=數(shù)據(jù)+方法第9頁(yè),共34頁(yè),2022年,5月20日,8點(diǎn)28分,星期二10創(chuàng)建類
4、 2-1class name type variable1; type variableN; type methodname1(parameter-list) /方法體 type methodnameN(parameter-list) /方法體 在類中,屬性是通過(guò)成員變量體現(xiàn)的,而操作是用成員函數(shù)(又稱為方法)實(shí)現(xiàn)的。Java中定義類的通用格式:成員變量(對(duì)象屬性或?qū)嵗兞炕驙顟B(tài))成員方法(對(duì)象行為或操作)第10頁(yè),共34頁(yè),2022年,5月20日,8點(diǎn)28分,星期二11創(chuàng)建類 2-2可以定義只包含成員變量或只包含方法的類如果一個(gè)類只有成員變量,那么這個(gè)類不能干任何事情如果想要類能干事情,必須
5、為這個(gè)類定義方法因?yàn)轭惖姆椒梢宰屍渌愅ㄟ^(guò)對(duì)象來(lái)調(diào)用,所以又可稱為類的接口第11頁(yè),共34頁(yè),2022年,5月20日,8點(diǎn)28分,星期二12類修飾符列表類名的規(guī)范:描述類的用途;首字母大寫(xiě);多個(gè)單詞連寫(xiě),且每個(gè)單詞首字母大寫(xiě)。類體主要包含四部分內(nèi)容:成員變量、構(gòu)造方法、成員方法、主方法。類修飾符功能無(wú)同包訪問(wèn)public完全開(kāi)放abstract抽象final沒(méi)有子類第12頁(yè),共34頁(yè),2022年,5月20日,8點(diǎn)28分,星期二13構(gòu)造方法的聲明構(gòu)造方法的定義:1、一般為public;2、沒(méi)有返回類型,不寫(xiě)void;3、與類名同名;4、不能直接調(diào)用,由new調(diào)用,創(chuàng)建對(duì)象;5、主要任務(wù):成員變
6、量的初始化。6、作用:創(chuàng)建對(duì)象。public 類名 () 方法體;第13頁(yè),共34頁(yè),2022年,5月20日,8點(diǎn)28分,星期二14定義方法定義方法的一般格式:access type methodname1(parameter-list) /方法體發(fā)往某個(gè)對(duì)象的消息對(duì)應(yīng)于一個(gè)方法調(diào)用。作為對(duì)消息的響應(yīng),對(duì)象將執(zhí)行一個(gè)類似于過(guò)程體的方法。方法是包含在類中的函數(shù)。方法名稱,必須返回類型,必須修飾符,可選參數(shù)列表,可選舉例:public void setdate(int day, int month, int year) day=23; month=7; year=2003;第14頁(yè),共34頁(yè),20
7、22年,5月20日,8點(diǎn)28分,星期二15成員變量的聲明修飾符 變量類型 變量名 = 值所有成員變量,如果不附初值,都有默認(rèn)初值。成員變量修飾符功能private限制類外訪問(wèn)無(wú)同包訪問(wèn)protected同包及子類訪問(wèn)public完全開(kāi)放static靜態(tài)final常量volatile可被多個(gè)線程訪問(wèn)transient不序列化第15頁(yè),共34頁(yè),2022年,5月20日,8點(diǎn)28分,星期二16成員方法的聲明修飾符 返回值類型 方法名(參數(shù)列表) throws 異常類型列表 方法體;成員方法命名規(guī)范與成員變量同方法修飾符功能private無(wú)protectedpublicstatic靜態(tài)final不能覆
8、蓋native本地方法abstract抽象synchronized同步方法第16頁(yè),共34頁(yè),2022年,5月20日,8點(diǎn)28分,星期二17高級(jí)訪問(wèn)控制總結(jié)訪問(wèn)控制private成員缺省的成員protected成員public成員同一類中成員同一包中其他類不同包中子類 不同包中非子類 第17頁(yè),共34頁(yè),2022年,5月20日,8點(diǎn)28分,星期二18創(chuàng)建對(duì)象使用下列語(yǔ)法可創(chuàng)建對(duì)象: new 構(gòu)造方法關(guān)鍵字 new 通常稱為創(chuàng)建運(yùn)算符,用于分配對(duì)象內(nèi)存,并將該內(nèi)存初始化為缺省值。一旦 new 完成分配和初始化內(nèi)存,它就將調(diào)用構(gòu)造方法來(lái)執(zhí)行對(duì)象初始化。當(dāng)創(chuàng)建一個(gè)類時(shí),只是創(chuàng)建了一種新的數(shù)據(jù)類型。對(duì)
9、象是類的一個(gè)實(shí)例。class FruitDemo public static void main(String args) Fruit f = new Fruit(true,false,50.0F); 創(chuàng)建對(duì)象第18頁(yè),共34頁(yè),2022年,5月20日,8點(diǎn)28分,星期二19使用對(duì)象要想使用對(duì)象,必須獲得一個(gè)對(duì)象的引用。一般使用賦值語(yǔ)句,例如: Person ren = new Person();上述形式的賦值語(yǔ)句實(shí)際上做了3件事:Person ren:聲明了一個(gè)Person類型的變量(對(duì)象變量)ren,該變量此時(shí)不指向任何對(duì)象。new Person():生成了一個(gè)Person類型的對(duì)象,該對(duì)
10、象是一個(gè)無(wú)名對(duì)象。:將這個(gè)無(wú)名對(duì)象的引用賦值給對(duì)象變量ren當(dāng)對(duì)象變量ren獲得了一個(gè)對(duì)象的引用后,就可以把ren稱作是一個(gè)Person類型的對(duì)象第19頁(yè),共34頁(yè),2022年,5月20日,8點(diǎn)28分,星期二20變量的作用域按照變量的作用域分類,類中只有兩種變量:實(shí)例變量:在所有方法之外但在類體中聲明或 定義的變量局部變量:在方法中聲明或定義的變量實(shí)例變量的有效范圍是整個(gè)類局部變量的有效范圍在方法體之中,出了方法體就自動(dòng)消失了第20頁(yè),共34頁(yè),2022年,5月20日,8點(diǎn)28分,星期二21變量的初始化任何變量在使用前必須被初始化對(duì)于實(shí)例變量,Java 編譯器會(huì)用缺省初始值自動(dòng)進(jìn)行初始化對(duì)于局
11、部變量, Java 編譯器不會(huì)自動(dòng)進(jìn)行初始化類型缺省值類型缺省值byte(byte)0charu0000 short(short)0float0.0Fint0double0.0Dlong0L對(duì)象引用nullbooleanfalse第21頁(yè),共34頁(yè),2022年,5月20日,8點(diǎn)28分,星期二22方法的參數(shù)方法的參數(shù)只有兩種類型:基本數(shù)據(jù)類型和對(duì)象類型在Java中,參數(shù)的傳遞只有一種方式,就是按值傳遞(傳遞自身的拷貝):對(duì)于基本數(shù)據(jù)類型,傳遞的值就是變量自身的值對(duì)于對(duì)象類型,傳遞的值就是對(duì)象的引用(而不是對(duì)象自身?。┑?2頁(yè),共34頁(yè),2022年,5月20日,8點(diǎn)28分,星期二23對(duì)象作為參數(shù)c
12、lass Test int a,b; Test(int i,int j) a=i; b=j; /可以在方法中改變對(duì)象狀態(tài) void change(Test obj) obj.a=50; obj.b=40; 當(dāng)對(duì)象作為方法參數(shù)時(shí),在方法中只能改變?cè)搶?duì)象的狀態(tài),但不能改變?cè)搶?duì)象的引用void swapobj(Day x,Day y) Day temp=y; y=x; x=temp; 引用本身按值傳遞Day2002,5,30Day2003,7,23obj1obj2xy調(diào)用swapobj(obj1,obj2)改變對(duì)象狀態(tài)xy第23頁(yè),共34頁(yè),2022年,5月20日,8點(diǎn)28分,星期二24this引用
13、public class PassTest int x; PassTest(int x) this.x=x; public void passingValue() System.out.println(“x 等于 +x); public static void main(String args) PassTest test = new PassTest(10); test.passingValue(); 關(guān)鍵字 this 與對(duì)象關(guān)聯(lián)它代表當(dāng)前對(duì)象指明此對(duì)象的變量 x 應(yīng)賦值為通過(guò)構(gòu)造函數(shù)傳遞的自變量 x 的值。 第24頁(yè),共34頁(yè),2022年,5月20日,8點(diǎn)28分,星期二25方法重載(ove
14、rloading)方法重載是Java實(shí)現(xiàn)面向?qū)ο蟮亩鄳B(tài)性機(jī)制的一種方式。同一個(gè)類中多個(gè)方法有相同的名字,不同的參數(shù)列表,這種情況稱為方法重載。當(dāng)重載方法被調(diào)用時(shí),Java編譯器根據(jù)參數(shù)的類型和數(shù)量來(lái)確定實(shí)際調(diào)用哪個(gè)重載方法的版本。方法重載不考慮方法的返回類型。第25頁(yè),共34頁(yè),2022年,5月20日,8點(diǎn)28分,星期二26方法重載示例class Calculation public void add( int a, int b) int c = a + b; System.out.println(兩個(gè)整數(shù)相加得 + c); public void add( float a, float b)
15、 float c = a + b; System.out.println(兩個(gè)浮點(diǎn)數(shù)相加得+c); public void add( String a, String b) String c = a + b; System.out.println(兩個(gè)字符串相加得 + c); class CalculationDemo public static void main(String args) Calculation c = new Calculation();c.add(10,20);c.add(40.0F, 35.65F); c.add(早上, 好); 編譯器決定調(diào)用版本第26頁(yè),共34頁(yè),
16、2022年,5月20日,8點(diǎn)28分,星期二27重載構(gòu)造函數(shù)一個(gè)類可以有多個(gè)構(gòu)造函數(shù)如果一個(gè)類沒(méi)有定義一個(gè)構(gòu)造函數(shù),Java 編譯器將為這個(gè)類自動(dòng)提供缺省構(gòu)造函數(shù)(即無(wú)參的構(gòu)造函數(shù))缺省構(gòu)造函數(shù)將成員變量的值初始化為缺省值一旦創(chuàng)建了自己的構(gòu)造函數(shù), Java 編譯器將不再自動(dòng)提供無(wú)參的構(gòu)造函數(shù)。重載構(gòu)造函數(shù)提供了一組創(chuàng)建對(duì)象的方式,可以根據(jù)需要決定是否帶初始參數(shù)。 public class constructOverload int x; constructOverload() x=0; System.out.println(不帶參數(shù)的構(gòu)造函數(shù)); constructOverload(int x
17、) this.x=x; System.out.println(帶一個(gè)參數(shù)的構(gòu)造函數(shù)); 第27頁(yè),共34頁(yè),2022年,5月20日,8點(diǎn)28分,星期二28類的靜態(tài)成員-static類中的靜態(tài)變量、方法或代碼塊屬于類,而不屬于某個(gè)特定的對(duì)象。 類的靜態(tài)成員可以與類的名稱一起使用,而無(wú)需創(chuàng)建類的對(duì)象。 靜態(tài)變量或方法也稱為類變量或類方法。用static修飾符修飾,可以是變量、方法或代碼塊第28頁(yè),共34頁(yè),2022年,5月20日,8點(diǎn)28分,星期二29靜態(tài)變量不管創(chuàng)建了類的多少實(shí)例,整個(gè)類中靜態(tài)變量的副本只有一個(gè)。 引用靜態(tài)變量的方法:通過(guò)引用類的任一實(shí)例通過(guò)類的名稱class StaticDem
18、o static int x = 0; StaticDemo()x+;StaticDemo d1 = new StaticDemo();StaticDemo d2 = new StaticDemo();d1.x = 100 ;d2.x = 200;testVariable = d1.x; 通過(guò)類實(shí)例訪問(wèn)不是一個(gè)好方法StaticDemo d1 = new StaticDemo();StaticDemo d2 = new StaticDemo(); StaticDemo.x = 100;StaticDemo.x = 200;testVariable = StaticDemo.x; 聲明為stat
19、ic的變量實(shí)質(zhì)上就是全局變量通過(guò)類名訪問(wèn)第29頁(yè),共34頁(yè),2022年,5月20日,8點(diǎn)28分,星期二30靜態(tài)方法與靜態(tài)方法相關(guān)的幾個(gè)要點(diǎn):類的靜態(tài)方法只能訪問(wèn)其他的靜態(tài)成員靜態(tài)方法沒(méi)有this靜態(tài)方法不能被覆蓋為非靜態(tài)方法class StaticFun static int i = 10; int j; static void setValue(int x) j=x;/出錯(cuò) System.out.println( + i); 不能訪問(wèn)非靜態(tài)變量j,可以訪問(wèn)靜態(tài)變量iclass StaticTest static void test() class Staticex extends StaticTest void test() /出錯(cuò) 第30頁(yè),共34頁(yè),2022年,5月20日,8點(diǎn)28分,星期二31Java類屬性和對(duì)象屬性的初始化順序首先找到類中的所有靜態(tài)聲明語(yǔ)句(不管位置在哪),把他們初始化為缺省值然后再按照書(shū)寫(xiě)順序依次處理每一個(gè)static的東西把對(duì)象屬性初始化為缺省值按照書(shū)寫(xiě)順序依次處理每一個(gè)對(duì)象屬性的初始化語(yǔ)句最后執(zhí)行構(gòu)造函數(shù) 第31頁(yè),共34頁(yè),2022年,5月20日,8點(diǎn)28分,星期二32final 關(guān)鍵字/final類final 修飾符可應(yīng)用于類、方法和變量。final
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZHAQ 6-2024 帶逆變輸出的儲(chǔ)能電源
- 醫(yī)院與醫(yī)學(xué)檢驗(yàn)技術(shù)人員2025年度勞動(dòng)合同
- 二零二五年度股權(quán)質(zhì)押與企業(yè)債務(wù)重組合同
- 二零二五年度集體宿舍租賃與社區(qū)治理服務(wù)合同
- 全面履行原則在2025年度房地產(chǎn)項(xiàng)目開(kāi)發(fā)合同中的執(zhí)行要求
- 二零二五年度汽車運(yùn)輸安全責(zé)任保險(xiǎn)合作協(xié)議
- 二零二五年度文化展覽聘請(qǐng)藝術(shù)藝人演出合同
- 2025年度高科技研發(fā)項(xiàng)目投資債轉(zhuǎn)股協(xié)議書(shū)
- 2025年度新能源汽車產(chǎn)業(yè)鏈債權(quán)轉(zhuǎn)讓合同
- 二零二五年度電子元器件制造勞務(wù)派遣員工合同
- 重慶市南開(kāi)名校2024-2025學(xué)年八年級(jí)下學(xué)期開(kāi)學(xué)考試物理試題(含答案)
- 滲漉法胡鵬講解
- 2025年交管12123學(xué)法減分試題庫(kù)附參考答案
- 2025年360億方智能航空AI白皮書(shū)-愛(ài)分析
- 【道 法】學(xué)會(huì)自我保護(hù)+課件-2024-2025學(xué)年統(tǒng)編版道德與法治七年級(jí)下冊(cè)
- 事業(yè)編 合同范例
- 福建省廈門市第一中學(xué)2023-2024學(xué)年高二上學(xué)期開(kāi)學(xué)考試英語(yǔ)試題(解析版)
- 2025屆高考英語(yǔ)讀后續(xù)寫(xiě)提分技巧+講義
- 買房協(xié)議書(shū)樣板電子版
- 2024年無(wú)錫科技職業(yè)學(xué)院高職單招數(shù)學(xué)歷年參考題庫(kù)含答案解析
- 2025年山東新華書(shū)店集團(tuán)限公司臨沂市縣分公司招聘錄取人員高頻重點(diǎn)提升(共500題)附帶答案詳解
評(píng)論
0/150
提交評(píng)論