JAVA面向?qū)ο骭第1頁(yè)
JAVA面向?qū)ο骭第2頁(yè)
JAVA面向?qū)ο骭第3頁(yè)
JAVA面向?qū)ο骭第4頁(yè)
JAVA面向?qū)ο骭第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1.類包括行為和特征,可以包括多個(gè)對(duì)象(結(jié)構(gòu)相同,數(shù)據(jù)不同)2.創(chuàng)建類 包括成員變量和方法特征為成員變量,行為為方法3.創(chuàng)建對(duì)象語(yǔ)法:類名 引用=new 類名();其中:new類名()是在創(chuàng)建對(duì)象因?qū)ο鬄閿?shù)據(jù),所有聲明引用來(lái)指代數(shù)據(jù)4.訪問(wèn)成員變量,訪問(wèn)方法語(yǔ)法:引用.成員變量引用.方法名();cStdent 創(chuàng)建Cell類:public class Cell int row;int col;Cell(int row,int col)this.row=row;this.col=col;Cell(int n)row=n;col=n;Cell()this(3,3);void drop()row+;

2、void moveLeft(int n)col-=n;void moveRight(int m)col+=m;String getcellInfo()return "("+row+","+col+")"創(chuàng)建CellTest測(cè)試類public class CellTest public static void main(String args) Cell c=new Cell(4,4);c.drop();print(c);c.moveLeft(3);c.moveRight(3);String a= c.getcellInfo();Sys

3、tem.out.println(a);print(c);public static void print(Cell cc)for(int i=1;i<=20;i+)for(int j=1;j<=10;j+)if(i=cc.row&&j=cc.col)System.out.print("* ");elseSystem.out.print("- ");System.out.println();左邊為棧 | 右邊為堆5.基本類型之間畫等號(hào)-賦值-身份證復(fù)印件引用類型之間畫等號(hào)-指向同一個(gè)對(duì)象-房子的鑰匙6.引用類型變量存儲(chǔ)的是對(duì)象的

4、地址信息,相同類型的引用類型變量可以賦值,不會(huì)產(chǎn)生新的對(duì)象,有可能使兩個(gè)以上的引用指向同一個(gè)對(duì)象Emp e1=new Emp();Emp e2=e1;=wx;=sq; Sytem.out.println();/sq7.Cell c=new Cell();c =null;/空,c不再指向?qū)ο骳row=5;/錯(cuò)誤mp emp=null;mp=new Emp;方法的簽名方法的簽名:方法名和參數(shù)列表一個(gè)類中不能有兩個(gè)方法的簽名完全相同,但可以方法名相同參數(shù)不同(方法的重載)(參數(shù)類型位置可以不同)Void pay(int a,double b)/ 對(duì)Void

5、pay(double a,int b)/對(duì)Java建議:1個(gè)文件只包括1個(gè)類1個(gè)文件可以包括多各類,但public只能一個(gè)類,并且類名與文件名相同。編譯器在編譯時(shí)根據(jù)簽名調(diào)用不同方法Pulic class CellViod drop()Row+;Void drop(int n)Row+=n;Public class CellTestPublic static void main(String args)Cell c=new Cell();C.drop();C.drop(3);構(gòu)造方法:1:構(gòu)造方法用于給成員變量初始化、Class StudentString name;Int age;Strin

6、g address;Student() /1Student(String name1,int age1,String address1)Name=name1;Age=age1;Address=address;/22:與類同名,沒(méi)有返回值類型3:構(gòu)造方法是在創(chuàng)建對(duì)象是被自動(dòng)調(diào)用/ Student();4:若自己不寫構(gòu)造方法則編譯器默認(rèn)一個(gè)無(wú)參的方法若寫了則不給無(wú)參的方法 若想要無(wú)參的自己在寫無(wú)參方法Student zs=new Student(); /1Student zs= new Student(“ zs“,25,鄭州);/25:構(gòu)造方法可以重載Public class Cellint ro

7、w;int col;Cell(int row,int col)this.row=row;this.col=col; /this 指代當(dāng)前對(duì)象,誰(shuí)調(diào)它就是指誰(shuí)類中的方法只要用到了成員變量前面默認(rèn)有thisthis 1.指代當(dāng)前對(duì)象,誰(shuí)調(diào)它就是指誰(shuí)2.用法:this.成員變量-訪問(wèn)成員變量;this();-調(diào)構(gòu)造方法; this.方法()-訪問(wèn)方法數(shù)組數(shù)組是一種引用類型,存在堆中,數(shù)組類型可以是本數(shù)據(jù)類型也可以是引用類型數(shù)據(jù),引用類型數(shù)組默認(rèn)為null、1. 引用類型數(shù)組定義:Cell cs=new Cell4;2. 引用類型數(shù)組初始化:1)Cell cs=new Cell4; cs0=new C

8、ell(3,3);cs1=new Cell(3);cs2=new Cell(4,3);cs3=new Cell(3,7);2)Cellcs=new Cell(),new Cell(1),new Cell(2,3),new Cell(3,5)面向?qū)ο蟮娜筇卣鳎悍庋b、繼承、多態(tài)Int a=new int4; /聲明int類型的數(shù)組,名為a包含4個(gè)元素每一個(gè)元素默認(rèn)值為null,a0是int類型初始化:a0=new int2 ;a1=new int3;/a1有三個(gè)元素a12=10;/ 給a的第二個(gè)元素的第二個(gè)元素賦值為0int a=new int 34;for(int i=0;i<3;i+)

9、for(int j=0;j<4;j+)aij=10; for(int i=0;i<a.length;i+)for(int j=0;j<ai.length;j+)aij=10;對(duì)象內(nèi)存管理JVM內(nèi)存分為堆、棧、方法區(qū)三個(gè)區(qū)域堆裝的是new出來(lái)的對(duì)象(包括成員變量:)成員變量生命周期從創(chuàng)建時(shí)存在到對(duì)象被回收消失垃圾回收器(gc)不定時(shí)回收沒(méi)有引用指向的對(duì)象,回收過(guò)程看不到,想快點(diǎn)用System.gc();內(nèi)存泄露不再使用的對(duì)象未被及時(shí)回收,建議對(duì)象不再用及時(shí)設(shè)置為null。棧java中,調(diào)一方法,給該方法分配一個(gè)“棧楨”,方法執(zhí)行完則棧楨消失,局部變量隨之消失。棧楨中包括參數(shù)、局

10、部變量局部變量:-定義在方法中;-沒(méi)有默認(rèn)值,必須自行設(shè)置初始值;-方法調(diào)用是,存在棧中,方法調(diào)結(jié)束,從棧中清除;成員變量:-定義在類中,方法外;-有默認(rèn)值,可以不顯示初始化;-所在類被實(shí)例化后,存在堆中,對(duì)象被回收是,成員變量失效;方法區(qū)方法區(qū)用于存儲(chǔ)類的信息(.class、方法),方法只有一份,通過(guò)this區(qū)分對(duì)象。繼承的意義繼承:避免代碼重復(fù),通過(guò)extends 關(guān)鍵字實(shí)現(xiàn)繼承,子類繼承父類后,具有子類和父類的成員,一個(gè)父類可以有多個(gè)子類,一個(gè)子類智能有一個(gè)父類,構(gòu)造子類之前先構(gòu)造父類,若自己不寫supper();在子類構(gòu)造第一句,默認(rèn)添加supper()調(diào)用父類無(wú)參構(gòu)造。泛化過(guò)程:pa

11、ckage oo.day03;public class TetrominoTest public static void main(String args) T t=new T(2,5);t.print();class TetrominoCellcells;Tetromino()cells=new Cell4;void drop()for(int i=0;i<cells.length;i+)cellsi.row+;void drop(int n)for(int i=0;i<cells.length;i+)cellsi.row+=n;void moveLeft()for(int i=

12、0;i<cells.length;i+)cellsi.col-;void moveLeft(int n)for(int i=0;i<cells.length;i+)cellsi.col-=n;void moveRight()for(int i=0;i<cells.length;i+)cellsi.col+;void moveRight(int n)for(int i=0;i<cells.length;i+)cellsi.col+=n;void print()for(int i=0;i<cells.length;i+)String s=cellsi.getCellI

13、nfo();System.out.println(s);class T extends TetrominoT()this(0,0);T(int row,int col)cells0=new Cell(row,col);cells1=new Cell(row,col+1);cells2=new Cell(row,col+2);cells3=new Cell(row+1,col+1);class J extends TetrominoJ()this(0,0);J(int row,int col)cells0=new Cell(row,col);cells1=new Cell(row,col+1);

14、cells2=new Cell(row+1,col+1);cells3=new Cell(row+2,col+1);構(gòu)造子類之前先構(gòu)造父類;super(); 調(diào)用父類無(wú)參構(gòu)造方法,只能放在子類構(gòu)造的第一句Person per=new Student();為向上造型,父類引用指向子類的對(duì)象方法的重寫:發(fā)生在兩個(gè)類中,方法簽名相同,并且是父類和子類的關(guān)系,子類擁有父類的成員變量和方法,Super.print();子類調(diào)用父類的方法 this:-本類 this.成員變量 this.方法(); this()Super:-父類 Super.成員變量 Super.方法() Super()重寫(overri

15、de)和重載(overload)的區(qū)別重載: 在一個(gè)類中,方法名相同,參數(shù)列表不同,“編譯時(shí)綁定”,(.java到.class的過(guò)程)編譯時(shí),根據(jù)參數(shù)的個(gè)數(shù)和參數(shù)類型來(lái)決定調(diào)用那個(gè)方法,返回值類型可以不同重寫: 在兩個(gè)類中,并且是父類和子類的關(guān)系,方法簽名相同,“運(yùn)行時(shí)綁定”(jvm加載并運(yùn)行.class的過(guò)程)根據(jù)對(duì)象來(lái)決定調(diào)用不同版本,返回值類型必須相同,訪問(wèn)優(yōu)先級(jí)子類必須 關(guān)鍵字Package是為了避免命名沖突的問(wèn)題,包名全部小寫域名反寫 項(xiàng)目名稱 模塊名稱Com.tarena.student.la.類名Import 包名.類名;(全局限定名)/聲明類、引入類同一個(gè)包不用import,訪

16、不同包要用importStatic修飾的成員變量不屬于對(duì)象,屬于類的變量,通常用類名.來(lái)調(diào)用,交靜態(tài)變量static成員變量和信息存在方法區(qū),只有一個(gè),不管創(chuàng)造了多少對(duì)象成員變量:1) 實(shí)例變量-不用static修飾的屬于對(duì)象,一個(gè)對(duì)象一份2) 靜態(tài)變量-static修飾的,屬于類,所有對(duì)象共用這一份Static修飾方法,沒(méi)有隱式的this靜態(tài)方法只能訪問(wèn)靜態(tài)變量,不需要訪問(wèn)實(shí)例變量,只需對(duì)參數(shù)進(jìn)行操作;非靜態(tài)方法可以訪問(wèn)靜態(tài)變量和實(shí)例變量(有隱式的this),需要訪問(wèn)實(shí)例變量,Static塊屬于類放在方法區(qū),加載類的時(shí)候被執(zhí)行,先走static塊再走其他的,先加載類.java到.class,

17、只執(zhí)行一次,類之家再一次,用于加載靜態(tài)資源(圖片、視頻、音頻)final修飾成員變量,不能更改-聲明同時(shí)初始化,-構(gòu)造函數(shù)中初始化final關(guān)鍵字修飾的方法不可以被重寫final關(guān)鍵字修飾的類不能被繼承,可以繼承別的類static final 修飾成員變來(lái)變量必須聲明同時(shí)初始化,常量必須大寫finally的用法。它只能用在try/catch語(yǔ)句中,并且附帶著一個(gè)語(yǔ)句塊,表示這段語(yǔ)句最終總是被執(zhí)行abstract抽象類,需要繼承,而final定義的類不能繼承,所以final 和 abstract 不能同時(shí)修飾一個(gè)類。class Astatic final double PI=3.1415926;

18、/效率高static int n=5;main()System.out.println(A.PI);/編譯時(shí)相當(dāng)于System.out.println(3.1415926); 不需要加載類System.out.println(A.n);/編譯時(shí)需要加在類A.class和靜態(tài)變量和方法抽象類1. 抽象方法:有abstract修飾,只有方法的定義,沒(méi)有方法體;2. 抽象類:有abstract修飾3. 包含抽象方法的類,必須是抽象類4. 抽象類不能被實(shí)例化,不能創(chuàng)建對(duì)象5. 抽象類一般需要被繼承:1) 子類也聲明為抽象類2) 子類重寫抽象類的所有抽象方法-首選6. 沒(méi)有抽象方法也可以定義為抽象類7.

19、 意義:-為子類提供一個(gè)公共的類型-封裝子類中的重復(fù)內(nèi)容(成員變量和方法)-定義抽象方法,有子類歷來(lái)做不同的實(shí)現(xiàn),但入口是一樣的接口1. 接口就是一個(gè)標(biāo)準(zhǔn)、一個(gè)規(guī)范,只要遵守著個(gè)規(guī)范,就能干某件事2. 接口只能包含常量和抽象方法,常量默認(rèn)public static final,方法默認(rèn)public abstract,public static可以省略,不能包含普通方法 3. 接口不能實(shí)例化4. 子類實(shí)現(xiàn)接口,需要將所有抽象方法重寫 5. 接口 interface 實(shí)現(xiàn)implements6. 一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,用逗號(hào)分隔, 子類訪問(wèn)權(quán)限大于父類,加public,抽象類是實(shí)現(xiàn)接口,不能繼承

20、,普通類可以實(shí)現(xiàn)接口但不能繼承接口,普通類也可以繼承抽象方法,但要重寫所有抽象方法,抽象類也可以繼承抽象類,但子類的抽象類也要重寫父類的所有抽象方法,接口可以繼承接口,普通類只能繼承一個(gè)類,類與類之間是繼承關(guān)系,類和接口是實(shí)現(xiàn)關(guān)系,接口和接口是繼承關(guān)系7. 先繼承后實(shí)現(xiàn)8. 接口與接口之間可以繼承當(dāng)某一個(gè)類實(shí)現(xiàn)了兩個(gè)接口的時(shí)候,兩個(gè)接口中存在兩個(gè)相同的方法,在實(shí)現(xiàn)的類中只需實(shí)現(xiàn)一個(gè)方法的方法體。如果該子類有方法體,用該類的對(duì)象調(diào)用該方法時(shí),調(diào)的是接口的方法,而不是父類方法如果該子類沒(méi)有方法體,用該類的對(duì)象調(diào)用該方法時(shí),調(diào)的是來(lái)自父類方法,也就不必重寫接口的方法總之一句話 接口的優(yōu)先級(jí)大于父類的優(yōu)先級(jí)9.多態(tài):1. 一個(gè)類型的引用指向不同的對(duì)象實(shí)現(xiàn)不同的方法。2. 同一個(gè)的對(duì)象,造型成不同的類型,會(huì)有不同的功能。強(qiáng)制轉(zhuǎn)型:編譯時(shí)默認(rèn)父類大子類小,接口大類小1. 可以通過(guò)強(qiáng)制轉(zhuǎn)換將父類變量轉(zhuǎn)換為子類變量,前提,該變量指向的對(duì)象是該子類類型2. 可以通過(guò)強(qiáng)制轉(zhuǎn)換將變量轉(zhuǎn)換某種接口了理性,前提,該變量指向的對(duì)象確實(shí)實(shí)現(xiàn)了該接口3. 如果在強(qiáng)制轉(zhuǎn)換過(guò)程過(guò)程中出現(xiàn)違背上述兩個(gè)前提,將會(huì)跑出 ClassCastException4. 為避

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論