版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
千鋒教學部JAVA的面向對象(一)目標面向對象設計思想類和對象的理解如何創(chuàng)建一個對象類的成員變量和方法構造方法類的封裝性什么是對象世界是由什么組成的?名勝人物品動物,植物……在OOP中,現實世界的所有事物全都被視為對象面向對象的概念面向對象的程序設計(OOP)OOP旨在在計算機程序中模擬現實世界中的概念能夠在計算機程序中用類似的實體模擬現實世界中的實體設計和實現軟件系統(tǒng)的方法在OOP中,現實世界的所有事物全都被視為對象何為OOP?類與對象抽象共同的屬性:姓名、性別、年齡、身高等共同的行為:吃飯、睡覺、行走等羅根夫人比爾蓋茨小小貝抽象共同的屬性:名稱、腿數、主食、棲息地等有共同的行為:發(fā)出叫聲、行走、吃等類類抽象從具體到抽象機動車類非機動車類車類類的定義類是同種對象的集合與抽象類描述對象的狀態(tài)和行為系統(tǒng)定義的類(JavaAPI)用戶自定義的類類對象型號價格里程起動停車行駛車輪數量檔的數量加速剎車名字外形品種搖尾巴跑、跳犬吠
屬性行為屬性屬性行為行為對象類與對象的關系類與對象的關系類對象對象的抽象類的實例化類類是對對象的描述,是對象的抽象,同一類別物體或概念的屬性和行為抽象出來的描述對象是表示現實世界中某個具體的事物,是類的一個實例,是類的實例化結果不同對象之間的屬性值可能相同類
類是一個模板,它擁有一大批同類的物體的共同特征
對象是類的具體體現,對應一個真實存在的物體以面向過程的思想來考慮問題時,以一個具體的流程為單位,考慮它的實現辦法。關心的是功能的實現。以面向對象的思想來考慮問題時,以具體的事物為單位,考慮它的屬性(特征)及行為(動作)。如:銀行取款面向過程:面向過程的設計思路就是首先分析問題的步驟:1、插卡,2、讀卡,3、登錄,4、取款,5、退卡。把上面每個步驟用分別的函數來實現,問題就解決了。
面向對象:整個取款過程針對的是取款機,取款機能插卡,能讀卡,能取卡,能取款,能退卡。對象是Java程序的核心,在Java程序中"萬事萬物皆對象"類描述了對象的屬性和對象的行為,類是對象的模板,圖紙。對象是類的一個實例,是一個實實在在的個體
。JDK提供了很多類供編程人員使用,編程人員也可以定義自己想要的類。特征或狀態(tài)操作或行為屬性(全局變量)方法(函數)抽象實例化對象類類與對象屬性namesexage方法speak()walk()Person類人姓名性別年齡
說話行走類特征或狀態(tài)操作或行為練習請舉例,什么是類,什么是對象例如人是類,張三是人這個類的對象,人這個類有哪些屬性,有哪些方法.如何區(qū)分類與對象以汽車為例,體會類的構成和使用.定義類的語法:[修飾符]class類名
{
//這里放屬性和方法的聲明
/*不要把方法調用等代碼片段直接放在類體里,例如System.out.println(...);*/}publicclassPerson{privateStringname;//姓名
privatebooleansex;//性別
privateintage;//年齡
publicvoidspeak(Stringword){//說話
System.out.println(name+“說:”+word);
}
publicvoidwalk(){//行走
System.out.println(“四處走動…”);
}}定義成員變量(屬性)的語法:[修飾符]數據類型
成員變量名
[=初始值];成員變量的類型可以使用Java語言中的任何一種數據類型(包括基本類型和引用類型)。在定義成員變量時可以對其進行初始化。如果不對其初始化,Java會使用默認的值對其進行初始化。成員變量的作用域(可見范圍)是整個類體。成員變量類型默認值byte0short0int0long0Lchar'\u0000'float0.0Fdouble0.0Dbooleanfalse所有的引用類型nullDemo各種數據類型的默認初始化Java的方法類似于其它語言的函數,是一段用來完成特定功能的代碼片段,聲明格式:形式參數(形參):在方法被調用時用于接收外界輸入的數據。實際參數(實參):調用方法時實際傳給方法的數據。返回值類型:方法要返回的結果的數據類型。若一個(普通)方法沒有返回值,必須給出返回值類型void返回值:方法在執(zhí)行完畢后返還給調用者的數據。return語句終止方法的運行并指定要返回的數據。[修飾符1修飾符2…]返回值類型方法名([形式參數列表]){
程序代碼;
return返回值;}20(普通)方法的聲明怎么根據設計好的類來創(chuàng)建一個對象?利用new關鍵詞調用類的構造方法(類的一種特殊方法)就可創(chuàng)建該類的一個對象。
構造方法構造方法的作用:創(chuàng)建并初始化對象(即給對象的屬性賦初值)。構造方法的名字和類名相同,不聲明返回值類型(例如void,int),也不要在方法中返回任何數據。兩種構造方法(也叫構造器/構造函數)顯式構造方法默認(隱式)構造方法publicclassPerson{privateStringname;//姓名
privatebooleansex;//性別
privateintage;//年齡
publicPerson(Stringn,booleanb,inta){name=n;sex=b;age=a;}publicvoidspeak(Stringword){//說話
System.out.println(name+“說:”
+word);
}
publicvoidwalk(){//行走
System.out.println(“走走走…”);
}
publicstaticvoidmain(String[]args){
Personperson=newPerson("張三",true,18);person.speak("你好");}}顯式構造方法:修飾符類名(參數類型參數名,…){
...}用new調用該類的構造方法來創(chuàng)建一個對象注意:傳遞的值和構造方法的參數在個數、次序和類型上要匹配普通方法用:對象變量名.方法來調用顯式構造方法Java的類都要求有構造方法,如果沒有定義構造方法,Java編譯器會為我們自動提供一個默認的無參構造方法(隱式構造方法)。
publicclassPerson{privateStringname;//姓名
privatebooleansex;//性別
privateintage;//年齡
publicvoidspeak(Stringword){//說話
System.out.println(name+“說:”+word);
}
publicvoidwalk(){//行走
System.out.println(“走走走…”);}publicstaticvoidmain(String[]args){Personperson=newPerson();person.walk();}}用new調用該類的默認構造方法來創(chuàng)建一個對象如果類中有自己編寫的構造方法時,編譯器就不會為我們再提供那個默認的無參構造方法。此時又希望還可以用無參的構造方法來創(chuàng)建類的實例時,那就必須在類中明確添加這個默認構造方法。publicclassPerson{privateStringname;//姓名
privatebooleansex;//性別
privateintage;//年齡
publicPerson(Stringn,booleanb,inta){name=n;sex=b;age=a;}publicvoidspeak(Stringword){//說話
System.out.println(name+“說:”+word);
}
publicvoidwalk(){//行走
System.out.println(“thepeoplecantreadeverywhere”);}publicstaticvoidmain(String[]args){Personperson=newPerson();person.speak(“你好”);
}}編譯報錯取名要"見名知意"類名的首字母大寫變量名和方法的首字母小寫采用駝峰式命名法創(chuàng)建一個學生(Student)類:學生應該有姓名(name)、年齡(age)、性別(sex),班級號(classNum),座位號(sno)。提供一個含參的構造方法用來創(chuàng)建一個學生對象。提供一個方法(displayInfo())用來顯示這個學生的姓名、年齡、性別、所在的班級和他的座位號。在同一個類和另一個場景類(Client.java)中分別寫一個main方法創(chuàng)建兩個學生對象,分別調用displayInfo()方法顯示各自的信息。綜合練習定義一個士兵類Soldier定義若干個屬性定義若干個方法(用來對屬性進行操作,選一個方法做重載,寫不少于3個重載的方法)printInfo...定義構造方法(用來對屬性進行初始化等)定義一個場景類(含有main方法的類)進行測試(創(chuàng)建對象,調用方法)分別以一個java文件和兩個java文件來實現以上功能,對比其異同.類描述了對象的特征和對象的行為,類是對象的模板,圖紙。對象是類的一個實例,是一個實實在在的個體
。(普通)方法的聲明格式.構造方法的聲明格式.兩種構造方法:顯式構造方法和隱式(默認)構造方法。構造方法的作用:構造并初始化對象。小結:類與對象方法的調用構造方法:用new調用。普通方法:用對象變量名.方法名(實參列表)
調用。靜態(tài)方法:在類內直接用方法名調用.小結:類與對象Java引用數據類型Java語言中除8種基本數據類型以外的數據類型稱為引用數據類型引用類型數據以對象的形式存在引用類型變量的值是某個對象的句柄(對某個對象的引用),而不是對象本身聲明引用類型變量時,系統(tǒng)只為該變量分配引用空間,并未創(chuàng)建一個具體的對象Java引用類型應用舉例publicclassMyDate{privateintday=12;privateintmonth=6;privateintyear=1900;publicMyDate(intd,intm,inty){ year=y; month=m; day=d; } publicvoiddisplay(){ System.out.println(year+"/"+month+"/"+day); } publicstaticvoidmain(String[]args){
MyDatem; m=newMyDate(21,7,2014); m.display();}}對象的構造和初始化(1)為引用類型變量分配引用空間
MyDatem;創(chuàng)建新對象--首先為新對象分配內存空間,并進行屬性(實例變量)的默認初始化
newMyDate(22,9,2001);m000daymonthyearm對象的構造和初始化(2)[復習]Java引用類型成員變量默認初始化原則成員變量類型
取值
byte0
short0
int0
long0L
char'\u0000'
float0.0F
double0.0D
booleanfalse
所有引用類型null對象的構造和初始化(3)進行屬性(成員變量)的顯式初始化,顯式初始化取值來自于類的定義中屬性聲明部分
privateintday=12;
privateintmonth=6;privateintyear=1900;m1261900daymonthyear對象的構造和初始化(4)執(zhí)行構造方法體中的語句publicMyDate(inty,intm,intd){ year=y; month=m; day=d; }
m2172014daymonthyear對象的構造和初始化(5)為引用類型變量m賦值m=newMyDate(22,9,2001);0x3a478bm2292001daymonthyear0x3a478b另一個引用類型的例子Student.java---自定義的一個類,有四個屬性,并具有各自的存取方法。有一個構造器,用于在創(chuàng)建對象時初始化四個屬性TestStudent.java---一個用于測試引用類型的程序。見下頁.對象的構造和初始化Students1;---為引用類型變量分配引用空間s1=newStudent("Lisa","Male",1,18);創(chuàng)建一個新的對象,并進行屬性(實例變量)的默認初始化
nulls1nullnull0namesexgrade0age對象的構造和初始化進行顯式初始化執(zhí)行構造方法:將傳遞進來的四個參數的值分別賦給四個屬性s1=newStudent("Lisa","FeMale",1,18);nulls1"Lisa"567a1namesexgrade18age12d4"FeMale"對象的構造和初始化最后,對引用類型變量s1賦值。將新創(chuàng)建的Student對象的存儲空間的首地址賦給s10x1a4afb12d4567a1namesexgrade18ages10x1a4afb"Lisa""male"方法的重載指的是一個類中可以定義有方法名相同,但參數列表不同的功能相近的多個方法,調用時系統(tǒng)會根據不同的參數列表選擇對應的方法。按照”最佳匹配性的原則執(zhí)行”day07.Client01.java參數列表不同是指參數的類型,個數或順序不同;類中定義的普通方法、構造方法都可以重載;重載方法的其他組成部分可以相同也可以不同;復習:方法重載(overload)思考方法名相同,參數列表也相同,返回值類型不同算不算重載?方法名相同,一個有返回值類型聲明,一個沒有算不算重載呢?可否定義一個與構造方法名相同,參數列表不同的,返回值類型為void的方法?方法名相同,參數列表也相同,可見性(訪問修飾符)不同算不算重載?例如:在Person類中添加如下方法:voidinfo(){System.out.println(“Myidis”+id);
}voidinfo(Stringt){System.out.println(t+“”+id+””+age);
}練習定義Computer,定義接收不同參數列表的add方法,計算兩個數的和并且返回回來,參數分別為(byte,byte),(int,int),(double,double)Demo傳一個參數,返回自增值,傳2個參數,返回兩個參數相加,傳3個參數,返回3個參數的立方和1,2,3===>1*1*1+2*2*2+3*3*3構造方法重載格式:構造方法重載,參數列表必須不同注意:可以在構造方法的第一行使用this()關鍵字調用其它(重載的)構造方法作用1:實現代碼重用構造方法重載舉例:
publicclassPerson{ publicPerson(Stringname,intage,Dated){…} publicPerson(Stringname,intage){…} publicPerson(Stringname,Dated){…}}構造方法重載作用2:接受常用的不同類型,不同數量的初始化參數File(File
parent,String
child)
根據parent抽象路徑名和child路徑名字符串創(chuàng)建一個新File實例。File(String
pathname)
通過將給定路徑名字符串轉換為抽象路徑名來創(chuàng)建一個新File實例。File(String
parent,String
child)
根據parent路徑名字符串和child路徑名字符串創(chuàng)建一個新File實例。java.l
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 房產投資期權合同(2篇)
- 2024年粉末冶金自潤滑材料合作協(xié)議書
- 2024年輻射自動觀測儀項目建議書
- 2024年中樞興奮藥項目建議書
- 2024年淡水捕撈產品項目合作計劃書
- 2024年皮革化學品:浸水助劑項目建議書
- 汽車銷售居間服務合同
- 2024版?zhèn)€人門面房出租合同
- 2024版服裝訂購合同范本-0
- 2024版合同管理機構
- 第三單元素養(yǎng)評價卷-2024-2025學年統(tǒng)編版語文一年級上冊
- 11《宇宙生命之謎》第二課時 教學設計-2024-2025學年語文六年級上冊統(tǒng)編版
- 《大學美育》 課件 李然 模塊三 自然審美
- 2024年新華東師大版七年級上冊數學全冊教案(新版教材)
- 2023屆濟南市歷下區(qū)九年級語文(上)期中考試卷附答案解析
- 部編版(2024版)七年級歷史上冊第6課《戰(zhàn)國時期的社會變革》精美課件
- 2024年新人教版七年級上冊生物全冊教學課件(新版教材)
- 國外工程項目合同范本
- JT∕T 937-2014 在用汽車噴烤漆房安全評價規(guī)范
- 人教版小學四年級道德與法治上冊《第四單元 讓生活多一些綠色》大單元整體教學設計
- 個人信息安全保護管理規(guī)定
評論
0/150
提交評論