版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、安徽大學(xué)安徽大學(xué)4.類(lèi)與對(duì)象類(lèi)與對(duì)象主講:王華彬主講:王華彬知識(shí)點(diǎn)知識(shí)點(diǎn)v變量作用域變量作用域v構(gòu)造方法構(gòu)造方法v方法重載方法重載v參數(shù)傳送參數(shù)傳送v實(shí)例成員和類(lèi)成員實(shí)例成員和類(lèi)成員vpackagevimportv訪問(wèn)權(quán)限訪問(wèn)權(quán)限v可變參數(shù)可變參數(shù)Java技術(shù)及其運(yùn)用技術(shù)及其運(yùn)用面向?qū)ο蟮娜齻€(gè)特性:面向?qū)ο蟮娜齻€(gè)特性:封裝、承繼和多態(tài)封裝、承繼和多態(tài)本章學(xué)習(xí)封裝性本章學(xué)習(xí)封裝性v類(lèi)的封裝性表達(dá)在,把一類(lèi)事物所具有的一樣的類(lèi)的封裝性表達(dá)在,把一類(lèi)事物所具有的一樣的屬性和方法封裝在一同。屬性和方法封裝在一同。v然后經(jīng)過(guò)定義該類(lèi)的一個(gè)對(duì)象,進(jìn)而對(duì)該對(duì)象的然后經(jīng)過(guò)定義該類(lèi)的一個(gè)對(duì)象,進(jìn)而對(duì)該對(duì)象的屬性
2、賦值,調(diào)用類(lèi)的方法,從而完成一定的功能屬性賦值,調(diào)用類(lèi)的方法,從而完成一定的功能封裝性封裝性v 汽車(chē)類(lèi):汽車(chē)類(lèi): CLASS carv 屬性:屬性:v 顏色,顏色, 灰色、紅色、黃色灰色、紅色、黃色v 品牌,品牌, 法拉利、現(xiàn)代、馬自達(dá)法拉利、現(xiàn)代、馬自達(dá) v 類(lèi)型,類(lèi)型, 賽車(chē)、轎跑車(chē)、賽車(chē)、轎跑車(chē)、SUVv 方法:方法:v 啟動(dòng)啟動(dòng)v 前進(jìn)前進(jìn) v 倒車(chē)倒車(chē)v 熄火熄火v car 羅院長(zhǎng)的車(chē)羅院長(zhǎng)的車(chē) =new car;v 羅院長(zhǎng)的車(chē)羅院長(zhǎng)的車(chē).carColor=gray;羅院長(zhǎng)的車(chē);羅院長(zhǎng)的車(chē).carBrand=現(xiàn)代;現(xiàn)代; v 羅院長(zhǎng)的車(chē)羅院長(zhǎng)的車(chē).carStart;羅院長(zhǎng)的車(chē);羅院長(zhǎng)
3、的車(chē).carStop;封裝性封裝性v 手機(jī)類(lèi):手機(jī)類(lèi): CLASS phonev 屬性:屬性:v 顏色,顏色, 灰色、紅色、黃色灰色、紅色、黃色v 品牌,品牌, 蘋(píng)果、谷歌、三星蘋(píng)果、谷歌、三星v 類(lèi)型,類(lèi)型, 觸屏、直板、翻蓋觸屏、直板、翻蓋v 方法:方法:v 開(kāi)機(jī)開(kāi)機(jī)v 撥號(hào)撥號(hào) v 掛斷掛斷v 關(guān)機(jī)關(guān)機(jī)v phone 王瑋的手機(jī)王瑋的手機(jī) =new phone;v 王瑋的手機(jī)王瑋的手機(jī).phoneColor=gray;王瑋的手機(jī);王瑋的手機(jī).phoneBrand=諾諾基亞基亞*; v 王瑋的手機(jī)王瑋的手機(jī).phonePoweron;王瑋的手機(jī);王瑋的手機(jī).phonePoweroff;類(lèi)定
4、義的普通要求類(lèi)定義的普通要求class Rect double width; double height; double getArea() double area=width*height; return area; 要求:類(lèi)名是合法標(biāo)示符,且容易了解要求:類(lèi)名是合法標(biāo)示符,且容易了解定義一個(gè)類(lèi)包括三步:定義一個(gè)類(lèi)包括三步: 取類(lèi)名取類(lèi)名 定義屬性定義屬性 定義方法定義方法類(lèi)定義的普通要求類(lèi)定義的普通要求v class carv int carBrand;v char carColor;v int carKind; v /屬性普通寫(xiě)在方法前習(xí)慣先定義屬性,再定義方法;屬性普通寫(xiě)在方法前習(xí)慣先
5、定義屬性,再定義方法;v /一行只定義一個(gè)屬性,不提倡一行只定義一個(gè)屬性,不提倡int carBrand , carKind;v /變量首字母小寫(xiě),第變量首字母小寫(xiě),第2個(gè)單詞開(kāi)場(chǎng)字母大寫(xiě)個(gè)單詞開(kāi)場(chǎng)字母大寫(xiě)v int startCar();v int forward();v int reversing();v int stopCar(); ; /方法方法 函數(shù)函數(shù)v v 類(lèi)的屬性類(lèi)的屬性 或稱為成員變量或稱為成員變量類(lèi)的屬性初始值類(lèi)的屬性初始值class Rect double width; double height; double getArea() double area=width*h
6、eight; return area; Java技術(shù)及其運(yùn)用技術(shù)及其運(yùn)用class 類(lèi)名類(lèi)名成員變量;成員變量;成員方法;成員方法; width=0.0;height=0.0;類(lèi)成員變量可以不賦初值,默類(lèi)成員變量可以不賦初值,默許許0,false;部分變量需求賦初值。部分變量需求賦初值。類(lèi)的屬性初始值類(lèi)的屬性初始值class Rect double width=1; double height; double getArea() double area=width*height; return area; class test public static void main(String ar
7、gs) Rect r=new Rect(); System.out.println(r.width); System.out.println(r.height); 思索:程序的輸出?思索:程序的輸出?Java技術(shù)及其運(yùn)用技術(shù)及其運(yùn)用double width;width=1;變量作用域變量作用域class Rect double width; double height;double area; double getArea() double area=width*height; return area; void setHeight (double height)this.height=hei
8、ght; Java技術(shù)及其運(yùn)用技術(shù)及其運(yùn)用成員變量成員變量方法體內(nèi)方法體內(nèi)部分變量部分變量方法的參數(shù)方法的參數(shù)變量變量v成員變量,即屬性的有效區(qū)是整個(gè)類(lèi);成員變量,即屬性的有效區(qū)是整個(gè)類(lèi);v方法中的部分變量的有效區(qū)是該方法;方法中的部分變量的有效區(qū)是該方法;v方法的參數(shù)的有效區(qū)在該方法中;方法的參數(shù)的有效區(qū)在該方法中;v當(dāng)成員變量和方法的部分變量或方法的參數(shù)變量當(dāng)成員變量和方法的部分變量或方法的參數(shù)變量一樣時(shí),成員變量被隱藏,一樣時(shí),成員變量被隱藏,v即:成員變量在方法中暫時(shí)失效即:成員變量在方法中暫時(shí)失效Java技術(shù)及其運(yùn)用技術(shù)及其運(yùn)用this關(guān)鍵字關(guān)鍵字v當(dāng)成員變量被同名的部分變量或方法的
9、參數(shù)變量當(dāng)成員變量被同名的部分變量或方法的參數(shù)變量隱藏時(shí)即成員變量在方法中暫時(shí)失效,隱藏時(shí)即成員變量在方法中暫時(shí)失效,v為了表示成員變量,可以用為了表示成員變量,可以用this.成員變量為指代成員變量為指代vthis指向調(diào)用該成員方法的對(duì)象。指向調(diào)用該成員方法的對(duì)象。vRect r=new Rect ();v this可以了解是可以了解是r的援用的援用變量作用域例題變量作用域例題class Variableint x=10;/成員變量成員變量 int y;void init()int x=5; y=x; System.out.println(y); 思索:程序輸出?思索:程序輸出?/此時(shí)此時(shí)y
10、=x=5,變量作用域例題變量作用域例題class Variableint x=10;/成員變量成員變量 int y;void init()int x=5; y=this.x; System.out.println(y);/此時(shí)此時(shí)y=x=10,class Variableint x=0,y=0,z=0;/成員變量成員變量void init(int x,int y)this.x=x;this.y=y;int z=5;/方法中的部分變量方法中的部分變量System.out.println(x+ +y+ +z);Variable v=new Variable();System.out.println
11、(v.x+ +v.y+ +v.z);v.init(20,30);System.out.println(v.x+ +v.y+ +v.z);2030v.x=20v.y=30再來(lái)一個(gè)例題再來(lái)一個(gè)例題public class Avoid f()int m=10,sum=0;if(m9)int z=10;z=2*m+z;for(int i=0;im;i+)sum=sum+i;m=sum;z=i+sum;Java技術(shù)及其運(yùn)用技術(shù)及其運(yùn)用編譯錯(cuò),錯(cuò)在哪兒?編譯錯(cuò),錯(cuò)在哪兒?Z的有效區(qū)在的有效區(qū)在if;i的有效區(qū)在的有效區(qū)在for課后習(xí)題課后習(xí)題4-8class Bint x=100,y=200;public
12、 void setX(int x)x=x; public void setY(int y)this.y=y; public int getXYSum() return x+y;Java技術(shù)及其運(yùn)用技術(shù)及其運(yùn)用B b=new B();b.setX(-100); /成員變量成員變量b.x=?b.setY(-200); /成員變量成員變量b.y=?System.out.println(b.getXYSum();/成員變量成員變量x=100;/成員變量成員變量y=-200/X+y=-100變量作用域知識(shí)點(diǎn)小結(jié)變量作用域知識(shí)點(diǎn)小結(jié)v類(lèi)的成員方法中定義的部分變量或成員方法的參數(shù)類(lèi)的成員方法中定義的部分變量
13、或成員方法的參數(shù)變量都會(huì)隱藏掉同名的類(lèi)的成員變量,變量都會(huì)隱藏掉同名的類(lèi)的成員變量,v這時(shí)可以運(yùn)用這時(shí)可以運(yùn)用this關(guān)鍵字來(lái)表示同名的類(lèi)的成員變關(guān)鍵字來(lái)表示同名的類(lèi)的成員變量量vthis關(guān)鍵字指向調(diào)用該成員方法的對(duì)象。關(guān)鍵字指向調(diào)用該成員方法的對(duì)象。Java技術(shù)及其運(yùn)用技術(shù)及其運(yùn)用v曾經(jīng)引見(jiàn)了類(lèi)的屬性,接下來(lái)是:曾經(jīng)引見(jiàn)了類(lèi)的屬性,接下來(lái)是: ?v類(lèi)的方法類(lèi)的方法 或稱為成員函數(shù)或稱為成員函數(shù)v1、構(gòu)造方法、構(gòu)造方法v2、成員方法、成員方法構(gòu)造方法構(gòu)造方法public class Example public static void main(String args) Rect r1= ne
14、w Rect(); /創(chuàng)建對(duì)象創(chuàng)建對(duì)象 r1.width=128;/運(yùn)用對(duì)象運(yùn)用對(duì)象 r1.height=69; double area=r1.getArea(); System.out.println(rectangle的面的面積積:+area); Java技術(shù)及其運(yùn)用技術(shù)及其運(yùn)用分配空間,并初始化對(duì)象,調(diào)用構(gòu)造方法分配空間,并初始化對(duì)象,調(diào)用構(gòu)造方法構(gòu)造方法構(gòu)造方法class Rect double width; double height; double getArea() double area=width*height; return area; Java技術(shù)及其運(yùn)用技術(shù)及其運(yùn)用Re
15、ct()v構(gòu)造方法是一種特殊的方法構(gòu)造方法是一種特殊的方法v構(gòu)造方法名和類(lèi)名一樣構(gòu)造方法名和類(lèi)名一樣v無(wú)前往類(lèi)型無(wú)前往類(lèi)型v構(gòu)造方法在構(gòu)造方法在new創(chuàng)建對(duì)象時(shí)被調(diào)用創(chuàng)建對(duì)象時(shí)被調(diào)用v假設(shè)無(wú)構(gòu)造方法,按照默許的構(gòu)造方法僅分配空間假設(shè)無(wú)構(gòu)造方法,按照默許的構(gòu)造方法僅分配空間v構(gòu)造方法可以重載構(gòu)造方法可以重載Rect r1=new Rect();v構(gòu)造方法:構(gòu)造方法: 是一個(gè)函數(shù)是一個(gè)函數(shù)v 和類(lèi)同名和類(lèi)同名v 對(duì)類(lèi)的屬性進(jìn)展賦值對(duì)類(lèi)的屬性進(jìn)展賦值v 可以重載,可以重載,構(gòu)造方法的重載構(gòu)造方法的重載class Rect double width; double height; Rect()widt
16、h=10.0;height=20.0;Rect(double x,double y)width=x;height=y;double getArea() 構(gòu)造方法名一樣,而構(gòu)造方法名一樣,而參數(shù)的個(gè)數(shù)或類(lèi)型不同參數(shù)的個(gè)數(shù)或類(lèi)型不同 Rect() 構(gòu)造方法的調(diào)用構(gòu)造方法的調(diào)用public class Example public static void main(String args) Rect r1= new Rect(); /創(chuàng)建對(duì)象創(chuàng)建對(duì)象 double area1=r1.getArea(); Rect r2= new Rect(1,2); /創(chuàng)建對(duì)象創(chuàng)建對(duì)象 double area2=r
17、2.getArea(); Java技術(shù)及其運(yùn)用技術(shù)及其運(yùn)用一個(gè)類(lèi)可以定義多個(gè)構(gòu)造方法,根據(jù)參數(shù)個(gè)數(shù)或類(lèi)型不同,一個(gè)類(lèi)可以定義多個(gè)構(gòu)造方法,根據(jù)參數(shù)個(gè)數(shù)或類(lèi)型不同,運(yùn)用不同的構(gòu)造方法,運(yùn)用不同的構(gòu)造方法,構(gòu)造函數(shù)作用是:為對(duì)象分配內(nèi)存空間,為對(duì)象的屬性賦初始值構(gòu)造函數(shù)作用是:為對(duì)象分配內(nèi)存空間,為對(duì)象的屬性賦初始值方法重載方法重載(Method Overloading)v多個(gè)方法可以享有一樣的名字多個(gè)方法可以享有一樣的名字v方法的參數(shù)必需不同方法的參數(shù)必需不同v或者是參數(shù)個(gè)數(shù)不同;或者是參數(shù)個(gè)數(shù)不同;v或者是參數(shù)類(lèi)型不同;或者是參數(shù)類(lèi)型不同;v完成的功能類(lèi)似完成的功能類(lèi)似v前往類(lèi)型不能作為區(qū)分函
18、數(shù)重載的規(guī)范前往類(lèi)型不能作為區(qū)分函數(shù)重載的規(guī)范方法重載的益處方法重載的益處v要打印不同類(lèi)型的數(shù)據(jù):要打印不同類(lèi)型的數(shù)據(jù):int, float, String,不不需求定義不同名的方法名:需求定義不同名的方法名:v printInt(int);v printFloat(float);v printString(String);v利用方法重載,只需求定義一個(gè)方法名利用方法重載,只需求定義一個(gè)方法名print(),接納不同的參數(shù):,接納不同的參數(shù):vprint(int);vprint(float);vprint(String);class MethodOverloadingvoid receive(
19、int i)System.out.println(Receive one int data );System.out.println(i=+i);void receive(int x,int y)System.out.println(Receive two int datas );System.out.println(x=+x+ y=+y);方法重載例題方法重載例題void receive(double d)System.out.println(Receive one double data );System.out.println(d=+d);void receive(String s)Sy
20、stem.out.println(Receive a string );System.out.println(s=+s);方法重載例題方法重載例題public class MethodOverloadingTestpublic static void main(String args)MethodOverloading mo=new MethodOverloading();mo.receive(1);mo.receive(2,3);mo.receive(12.56);mo.receive(very interesting,isnt it);方法重載例題方法重載例題多態(tài)性:發(fā)送音訊給某個(gè)對(duì)象,多
21、態(tài)性:發(fā)送音訊給某個(gè)對(duì)象, 讓該對(duì)象自行決議呼應(yīng)何種行為。讓該對(duì)象自行決議呼應(yīng)何種行為。v書(shū)上例題書(shū)上例題4-11,見(jiàn),見(jiàn).Java文件文件Java技術(shù)及其運(yùn)用技術(shù)及其運(yùn)用練習(xí)練習(xí)v課后習(xí)題課后習(xí)題4-10Java技術(shù)及其運(yùn)用技術(shù)及其運(yùn)用小結(jié)小結(jié)v構(gòu)造方法構(gòu)造方法v構(gòu)造方法是一種特殊的方法構(gòu)造方法是一種特殊的方法v方法名和類(lèi)名一樣方法名和類(lèi)名一樣v無(wú)前往類(lèi)型無(wú)前往類(lèi)型v構(gòu)造方法在構(gòu)造方法在new創(chuàng)建對(duì)象時(shí)被調(diào)用創(chuàng)建對(duì)象時(shí)被調(diào)用v假設(shè)無(wú)構(gòu)造方法,按照默許的構(gòu)造方法僅分配空假設(shè)無(wú)構(gòu)造方法,按照默許的構(gòu)造方法僅分配空間間v構(gòu)造方法可以重載,即可以有多個(gè)構(gòu)造方法構(gòu)造方法可以重載,即可以有多個(gè)構(gòu)造方法J
22、ava技術(shù)及其運(yùn)用技術(shù)及其運(yùn)用類(lèi)的方法類(lèi)的方法v與與c言語(yǔ)的函數(shù)定義根本一樣,只不過(guò)在類(lèi)中稱為言語(yǔ)的函數(shù)定義根本一樣,只不過(guò)在類(lèi)中稱為方法,在此不再贅述方法,在此不再贅述 。v需求留意的是:在方法體內(nèi),成員變量和部分變需求留意的是:在方法體內(nèi),成員變量和部分變量的區(qū)別。其實(shí)可以把成員變量當(dāng)做全局變量了量的區(qū)別。其實(shí)可以把成員變量當(dāng)做全局變量了解即可。解即可。小結(jié)小結(jié)v方法重載方法重載v多個(gè)方法可以享有一樣的名字多個(gè)方法可以享有一樣的名字v方法的參數(shù)必需不同方法的參數(shù)必需不同v或者是參數(shù)個(gè)數(shù)不同;或者是參數(shù)個(gè)數(shù)不同;v或者是參數(shù)類(lèi)型不同;或者是參數(shù)類(lèi)型不同;v完成的功能類(lèi)似完成的功能類(lèi)似v前往類(lèi)
23、型不能作為區(qū)分函數(shù)重載的規(guī)范前往類(lèi)型不能作為區(qū)分函數(shù)重載的規(guī)范v表達(dá)面向?qū)ο蟮亩鄳B(tài)性表達(dá)面向?qū)ο蟮亩鄳B(tài)性Java技術(shù)及其運(yùn)用技術(shù)及其運(yùn)用類(lèi)變量和簡(jiǎn)單數(shù)據(jù)類(lèi)型變量的類(lèi)變量和簡(jiǎn)單數(shù)據(jù)類(lèi)型變量的區(qū)別區(qū)別Circle c1; int i;Java技術(shù)及其運(yùn)用技術(shù)及其運(yùn)用只聲明,未分配空間,只聲明,未分配空間,c1=null聲明的同時(shí)分配空間聲明的同時(shí)分配空間簡(jiǎn)單數(shù)據(jù)類(lèi)型變量簡(jiǎn)單數(shù)據(jù)類(lèi)型變量int i;i=1;int j;j=2;j=i;Java技術(shù)及其運(yùn)用技術(shù)及其運(yùn)用ij12 1i和和j分別指向兩塊不同的內(nèi)存區(qū)域。分別指向兩塊不同的內(nèi)存區(qū)域。j=I;把把i中的內(nèi)容復(fù)制到中的內(nèi)容復(fù)制到j(luò)中;中;類(lèi)變量類(lèi)
24、變量Java技術(shù)及其運(yùn)用技術(shù)及其運(yùn)用Circle c1;c1=new Circle();Circle c2;c2=new Circle();c2=c1;c1c2c1和和c2指向同一塊內(nèi)存區(qū)域。指向同一塊內(nèi)存區(qū)域。c2=c1;c2相當(dāng)于相當(dāng)于c1的援用;的援用;此時(shí),此時(shí),c2原來(lái)的內(nèi)存空間被釋放;原來(lái)的內(nèi)存空間被釋放;幾條本卷須知幾條本卷須知1、不要定義沒(méi)有實(shí)體的類(lèi)的空對(duì)象,必需經(jīng)過(guò)、不要定義沒(méi)有實(shí)體的類(lèi)的空對(duì)象,必需經(jīng)過(guò)new+構(gòu)造函數(shù)創(chuàng)建對(duì)象;構(gòu)造函數(shù)創(chuàng)建對(duì)象;2、對(duì)象的名字,可以以為是該對(duì)象對(duì)應(yīng)內(nèi)存區(qū)域的、對(duì)象的名字,可以以為是該對(duì)象對(duì)應(yīng)內(nèi)存區(qū)域的一個(gè)援用,即:一個(gè)別名。假設(shè)對(duì)象直接進(jìn)展
25、賦一個(gè)援用,即:一個(gè)別名。假設(shè)對(duì)象直接進(jìn)展賦值,那么原先的內(nèi)存被釋放。值,那么原先的內(nèi)存被釋放。3、在、在java言語(yǔ)中,類(lèi)只需構(gòu)造方法,沒(méi)有析構(gòu)方法言語(yǔ)中,類(lèi)只需構(gòu)造方法,沒(méi)有析構(gòu)方法,只是由于,只是由于java言語(yǔ)有渣滓回收機(jī)制。這也正是言語(yǔ)有渣滓回收機(jī)制。這也正是java程序普通很少有內(nèi)存泄露的緣由。程序普通很少有內(nèi)存泄露的緣由。v曾經(jīng)引見(jiàn)了類(lèi)的屬性和方法,曾經(jīng)引見(jiàn)了類(lèi)的屬性和方法,v包括:成員變量的作用域包括:成員變量的作用域v 構(gòu)造函數(shù)及重載構(gòu)造函數(shù)及重載v 對(duì)象創(chuàng)建的原理對(duì)象創(chuàng)建的原理v接下來(lái),引見(jiàn)一下方法的參數(shù)傳送中的本卷須知接下來(lái),引見(jiàn)一下方法的參數(shù)傳送中的本卷須知成員方法參數(shù)
26、成員方法參數(shù)v參數(shù)的類(lèi)型:參數(shù)的類(lèi)型:v簡(jiǎn)單數(shù)據(jù)類(lèi)型:傳值,不改動(dòng)參數(shù)的值;簡(jiǎn)單數(shù)據(jù)類(lèi)型:傳值,不改動(dòng)參數(shù)的值;v援用數(shù)據(jù)類(lèi)型數(shù)組類(lèi)型、類(lèi)或接口:傳地址援用數(shù)據(jù)類(lèi)型數(shù)組類(lèi)型、類(lèi)或接口:傳地址,可改動(dòng)參數(shù)的值;,可改動(dòng)參數(shù)的值;vclass Method vvoid receive(int i)i=6;vv在在main函數(shù)中,執(zhí)行如下代碼,思索輸出?函數(shù)中,執(zhí)行如下代碼,思索輸出?vMethod m=new Method ();vint a=5;vm. receive(a);vSystem.out.println(a);此時(shí):此時(shí):a為全局變量,經(jīng)過(guò)為全局變量,經(jīng)過(guò)參數(shù)參數(shù)i傳到傳到receiv
27、e方法中,方法中,i相當(dāng)于相當(dāng)于a的復(fù)制品,的復(fù)制品,i的改動(dòng)不改動(dòng)的改動(dòng)不改動(dòng)a的值的值 class Method void receive(int i)i=6; 在在main函數(shù)中,執(zhí)行如下代碼,思索輸出?函數(shù)中,執(zhí)行如下代碼,思索輸出? Method m=new Method (); float a=5; m. receive(a); System.out.println(a);參數(shù)傳送的值的級(jí)別參數(shù)傳送的值的級(jí)別不能高于該參數(shù)值,不能高于該參數(shù)值,可以低于該參數(shù)值可以低于該參數(shù)值參數(shù)傳送參數(shù)傳送v當(dāng)傳送的參數(shù)是簡(jiǎn)單類(lèi)型的時(shí)候,傳值,方法調(diào)當(dāng)傳送的參數(shù)是簡(jiǎn)單類(lèi)型的時(shí)候,傳值,方法調(diào)用終了
28、后原值不變;用終了后原值不變;v當(dāng)傳送的參數(shù)是援用類(lèi)型的時(shí)候,傳地址,方法當(dāng)傳送的參數(shù)是援用類(lèi)型的時(shí)候,傳地址,方法調(diào)用終了后原值會(huì)變。調(diào)用終了后原值會(huì)變。vint a=5;vvoid receive(int i)i=6;Java技術(shù)及其運(yùn)用技術(shù)及其運(yùn)用556aiiv假設(shè)參數(shù)是援用的話:假設(shè)參數(shù)是援用的話:v當(dāng)傳送的參數(shù)是援用類(lèi)型的時(shí)候,傳地址,方法當(dāng)傳送的參數(shù)是援用類(lèi)型的時(shí)候,傳地址,方法調(diào)用終了后原值會(huì)變。調(diào)用終了后原值會(huì)變。v留意:留意: 對(duì)象名是一種援用對(duì)象名是一種援用5ai6i=6v再看一個(gè)綜合性的例子!再看一個(gè)綜合性的例子!傳值和傳地址舉例傳值和傳地址舉例public class
29、PassTestfloat ptValue;public void changeInt(int value)value=55;public void changeObjValue(PassTest ref)ref.ptValue=99f;public static void main(String args)int val;PassTest pt=new PassTest();val=11;pt.changeInt(val); /val=?pt.ptValue=101f;pt.changeObjValue(pt); /pt.ptValue=?練習(xí)練習(xí)Java技術(shù)及其運(yùn)用技術(shù)及其運(yùn)用課堂練習(xí)課堂
30、練習(xí) : 請(qǐng)同窗們思索結(jié)果,并解釋請(qǐng)同窗們思索結(jié)果,并解釋public class Swapvoid swapp(int x,int y)int temp;System.out.println(x+,+y);temp=x;x=y;y=temp;System.out.println(x+,+y);public static void main(String args)int u=30,v=50;System.out.println(u+,+v);Swap s=new Swap();s.swapp(u,v);System.out.println(u+,+v);練習(xí)練習(xí)Java技術(shù)及其運(yùn)用技術(shù)及其運(yùn)
31、用public class Swap1int x,y;void swapp(Swap1 s)int temp;System.out.println(s.x+,+s.y);temp=s.x;s.x=s.y;s.y=temp;System.out.println(s.x+,+s.y);int u=30,v=50;Swap1 s=new Swap1();s.x=u;s.y=v;System.out.println(s.x+,+s.y);s.swapp(s);System.out.println(s.x+,+s.y);參數(shù)傳送小結(jié)參數(shù)傳送小結(jié)v當(dāng)傳送的參數(shù)是簡(jiǎn)單類(lèi)型的時(shí)候,傳值,方法調(diào)當(dāng)傳送的參數(shù)是簡(jiǎn)
32、單類(lèi)型的時(shí)候,傳值,方法調(diào)用終了后原值不變;用終了后原值不變;v當(dāng)傳送的參數(shù)是援用類(lèi)型的時(shí)候,傳地址,方法當(dāng)傳送的參數(shù)是援用類(lèi)型的時(shí)候,傳地址,方法調(diào)用終了后原值會(huì)變。調(diào)用終了后原值會(huì)變。Java技術(shù)及其運(yùn)用技術(shù)及其運(yùn)用v在之前的學(xué)習(xí)中,我們知道:在之前的學(xué)習(xí)中,我們知道:v 類(lèi)的屬性和方法,必需先創(chuàng)建對(duì)象,然后經(jīng)過(guò)類(lèi)的屬性和方法,必需先創(chuàng)建對(duì)象,然后經(jīng)過(guò)對(duì)象調(diào)用,為什么輸出函數(shù)可以直接調(diào)用呢?對(duì)象調(diào)用,為什么輸出函數(shù)可以直接調(diào)用呢?v System.out.println();v 請(qǐng)同窗們思索:請(qǐng)同窗們思索: v System是什么?是什么?v Out是什么?是什么?v println()是
33、什么?是什么?v v類(lèi)成員類(lèi)成員 和實(shí)例成員和實(shí)例成員vstatic關(guān)鍵字關(guān)鍵字 v靜態(tài)成員:靜態(tài)成員變量和靜態(tài)成員函數(shù)靜態(tài)成員:靜態(tài)成員變量和靜態(tài)成員函數(shù)static關(guān)鍵字關(guān)鍵字class 類(lèi)名類(lèi)名成員變量;成員變量;成員方法;成員方法;class 類(lèi)名類(lèi)名成員變量;成員變量;成員方法;成員方法;staticstatic實(shí)例成員實(shí)例成員類(lèi)成員或類(lèi)成員或靜態(tài)成員靜態(tài)成員類(lèi)變量類(lèi)變量 和實(shí)例變量和實(shí)例變量v類(lèi)的組成部分是:類(lèi)的組成部分是:v屬性和方法,及成員變量和成員函數(shù)屬性和方法,及成員變量和成員函數(shù)v成員變量的類(lèi)型分為兩種:成員變量的類(lèi)型分為兩種:vclass rectv int weigh
34、t; /實(shí)例變量實(shí)例變量v static int height; /類(lèi)變量或靜態(tài)變量類(lèi)變量或靜態(tài)變量v v由由static修飾的成員變量,稱為類(lèi)變量。修飾的成員變量,稱為類(lèi)變量。v1、一個(gè)類(lèi)的不同對(duì)象,分別分配空間,一個(gè)對(duì)象、一個(gè)類(lèi)的不同對(duì)象,分別分配空間,一個(gè)對(duì)象的實(shí)例變量改動(dòng),不影響其他類(lèi);的實(shí)例變量改動(dòng),不影響其他類(lèi);v2、但是對(duì)于類(lèi)變量,在字節(jié)碼文件加載到內(nèi)存時(shí)、但是對(duì)于類(lèi)變量,在字節(jié)碼文件加載到內(nèi)存時(shí),假設(shè)沒(méi)有創(chuàng)建對(duì)象,實(shí)例變量就不分配內(nèi)存,假設(shè)沒(méi)有創(chuàng)建對(duì)象,實(shí)例變量就不分配內(nèi)存,而類(lèi)變量分配了內(nèi)存,思索:意味著什么?而類(lèi)變量分配了內(nèi)存,思索:意味著什么?v 而且,一切的對(duì)象的類(lèi)變量
35、都共享同一個(gè)內(nèi)而且,一切的對(duì)象的類(lèi)變量都共享同一個(gè)內(nèi)存,即:假設(shè)一個(gè)對(duì)象的類(lèi)變量改動(dòng),其他對(duì)象存,即:假設(shè)一個(gè)對(duì)象的類(lèi)變量改動(dòng),其他對(duì)象的類(lèi)變量也同時(shí)改動(dòng)。的類(lèi)變量也同時(shí)改動(dòng)。類(lèi)成員和實(shí)例成員類(lèi)成員和實(shí)例成員v類(lèi)成員屬性或方法類(lèi)成員屬性或方法v用用static修飾的成員;修飾的成員;v屬于類(lèi);屬于類(lèi);v一切對(duì)象共享一個(gè)類(lèi)成員,只需一個(gè)。一切對(duì)象共享一個(gè)類(lèi)成員,只需一個(gè)。v實(shí)例成員屬性或方法實(shí)例成員屬性或方法v無(wú)無(wú)static修飾的成員;修飾的成員;v屬于對(duì)象;屬于對(duì)象;v每個(gè)對(duì)象都有各自的一個(gè),相互獨(dú)立。每個(gè)對(duì)象都有各自的一個(gè),相互獨(dú)立。類(lèi)成員和實(shí)例成員類(lèi)成員和實(shí)例成員v類(lèi)成員類(lèi)成員v用類(lèi)名或
36、對(duì)象名來(lái)調(diào)用;用類(lèi)名或?qū)ο竺麃?lái)調(diào)用;v對(duì)類(lèi)成員的修正影響整個(gè)類(lèi)的一切對(duì)象的對(duì)類(lèi)成員的修正影響整個(gè)類(lèi)的一切對(duì)象的類(lèi)成員;類(lèi)成員;v類(lèi)成員方法只能對(duì)類(lèi)成員變量進(jìn)展支配;類(lèi)成員方法只能對(duì)類(lèi)成員變量進(jìn)展支配;v實(shí)例成員實(shí)例成員v用對(duì)象名來(lái)調(diào)用;用對(duì)象名來(lái)調(diào)用;v對(duì)某對(duì)象實(shí)例成員的修正不會(huì)影響其他對(duì)對(duì)某對(duì)象實(shí)例成員的修正不會(huì)影響其他對(duì)象的實(shí)例成員;象的實(shí)例成員;v class StudentvString name;vstatic String school=北京大學(xué)北京大學(xué);v v class tvpublic static void main(String args)v System.out.pri
37、ntln(Student.school);/正確正確v System.out.println(Student. name); /錯(cuò)誤錯(cuò)誤v Student stu1=new Student();vSystem.out.println(stu1.school);v System.out.println(stu1. name);v v /對(duì)于類(lèi)變量,可以在主函數(shù)中,不創(chuàng)建該類(lèi)對(duì)象,而直接運(yùn)用類(lèi)名對(duì)于類(lèi)變量,可以在主函數(shù)中,不創(chuàng)建該類(lèi)對(duì)象,而直接運(yùn)用類(lèi)名進(jìn)展調(diào)用,也可以經(jīng)過(guò)創(chuàng)建對(duì)象,經(jīng)過(guò)對(duì)象進(jìn)展調(diào)用,共享內(nèi)存進(jìn)展調(diào)用,也可以經(jīng)過(guò)創(chuàng)建對(duì)象,經(jīng)過(guò)對(duì)象進(jìn)展調(diào)用,共享內(nèi)存實(shí)例成員和類(lèi)成員舉例實(shí)例成員和類(lèi)成員
38、舉例v舉例舉例memberTest.java類(lèi)memberTest類(lèi)變量a實(shí)例變量b方法。對(duì)象a對(duì)象b對(duì)象n類(lèi)變量a實(shí)例變量b函數(shù)類(lèi)變量a實(shí)例變量b函數(shù)類(lèi)變量a實(shí)例變量b函數(shù)類(lèi)變量a方法實(shí)例成員方法在生成第一實(shí)例成員方法在生成第一個(gè)對(duì)象時(shí)被分配了入口地個(gè)對(duì)象時(shí)被分配了入口地址;址;類(lèi)成員方法在類(lèi)被裝載內(nèi)類(lèi)成員方法在類(lèi)被裝載內(nèi)存時(shí)被分配了入口地址;存時(shí)被分配了入口地址;Student.javapublic class StudentString name;static String school=北京大學(xué)北京大學(xué);public static void main(String args)Stude
39、nt stu1=new Student();Student stu2=new Student();Student stu3=new Student();=1;=2;=3;System.out.println(+,+stu1.school);System.out.println(+,+stu2.school);System.out.println(+,+stu3.school);stu2.school=安徽大學(xué)安徽大學(xué);System.out.println(+,+stu1
40、.school);System.out.println(+,+stu2.school);System.out.println(+,+stu3.school); /思索程序的輸出結(jié)果思索程序的輸出結(jié)果Java技術(shù)及其運(yùn)用技術(shù)及其運(yùn)用v 對(duì)于方法,也分為:類(lèi)方法和實(shí)例方法對(duì)于方法,也分為:類(lèi)方法和實(shí)例方法v class rectv int start /實(shí)例方法實(shí)例方法v static int stop /類(lèi)方法類(lèi)方法v v 1、對(duì)于實(shí)例方法,只需創(chuàng)建對(duì)象后,經(jīng)過(guò)對(duì)象調(diào)用。、對(duì)于實(shí)例方法,只需創(chuàng)建對(duì)象后,經(jīng)過(guò)對(duì)象調(diào)用。v 2、對(duì)于類(lèi)方法,可以不創(chuàng)建對(duì)象直接經(jīng)過(guò)類(lèi)
41、名調(diào)用,也、對(duì)于類(lèi)方法,可以不創(chuàng)建對(duì)象直接經(jīng)過(guò)類(lèi)名調(diào)用,也可以創(chuàng)建對(duì)象,經(jīng)過(guò)對(duì)象調(diào)用??梢詣?chuàng)建對(duì)象,經(jīng)過(guò)對(duì)象調(diào)用。v 3、實(shí)例方法可以調(diào)用實(shí)例變量和類(lèi)變量,而類(lèi)方法不能、實(shí)例方法可以調(diào)用實(shí)例變量和類(lèi)變量,而類(lèi)方法不能調(diào)用實(shí)例變量,思索為什么?調(diào)用實(shí)例變量,思索為什么?v 由于:類(lèi)方法在對(duì)象創(chuàng)建之前就可以運(yùn)用,而此時(shí)實(shí)例變由于:類(lèi)方法在對(duì)象創(chuàng)建之前就可以運(yùn)用,而此時(shí)實(shí)例變量還沒(méi)有分配內(nèi)存。量還沒(méi)有分配內(nèi)存。v class StudentvString name;vstatic String school=北京大學(xué)北京大學(xué);vvvoid start1()v System.out.println(n
42、ame); System.out.println(school); v vvstaticvoid start()v System.out.println(name);v System.out.println(school);v v 練習(xí)練習(xí)v class StudentvString name;vstatic String school=北京大學(xué)北京大學(xué);vvoid start1()vSystem.out.println(name); System.out.println(school);v v staticvoid start() System.out.println(school);v v
43、 class tvpublic static void main(String args)vStudent.start(); /類(lèi)方法,可由類(lèi)名直接調(diào)用類(lèi)方法,可由類(lèi)名直接調(diào)用v v vJava技術(shù)及其運(yùn)用技術(shù)及其運(yùn)用main()方法方法思索:為什么思索:為什么main()方法用方法用static修飾?修飾?public class Studentpublic static void main(String args)java 類(lèi)名類(lèi)名.main() Student .main() 一個(gè)類(lèi)的一個(gè)類(lèi)的main方法必需用方法必需用static修飾,由于修飾,由于Java運(yùn)轉(zhuǎn)時(shí)系統(tǒng)在開(kāi)場(chǎng)執(zhí)行一個(gè)程序
44、前,并沒(méi)有生成運(yùn)轉(zhuǎn)時(shí)系統(tǒng)在開(kāi)場(chǎng)執(zhí)行一個(gè)程序前,并沒(méi)有生成類(lèi)的一個(gè)實(shí)例,它只能經(jīng)過(guò)類(lèi)名來(lái)調(diào)用類(lèi)的一個(gè)實(shí)例,它只能經(jīng)過(guò)類(lèi)名來(lái)調(diào)用main方方法作為程序的入口。法作為程序的入口。static關(guān)鍵字小結(jié)關(guān)鍵字小結(jié)v用用static修飾的類(lèi)中的成員變量或成員方法,都稱修飾的類(lèi)中的成員變量或成員方法,都稱為類(lèi)的成員;為類(lèi)的成員;-類(lèi)類(lèi)v沒(méi)有用沒(méi)有用static修飾的,稱為實(shí)例成員。修飾的,稱為實(shí)例成員。-對(duì)象對(duì)象v類(lèi)的成員獨(dú)一;而對(duì)象的成員有多個(gè),每個(gè)相互類(lèi)的成員獨(dú)一;而對(duì)象的成員有多個(gè),每個(gè)相互獨(dú)立。獨(dú)立。v類(lèi)的成員由類(lèi)或?qū)ο髞?lái)調(diào)用;實(shí)例成員由對(duì)象來(lái)類(lèi)的成員由類(lèi)或?qū)ο髞?lái)調(diào)用;實(shí)例成員由對(duì)象來(lái)調(diào)用調(diào)用v類(lèi)
45、的成員在類(lèi)有了之后就存在了,而實(shí)例成員必類(lèi)的成員在類(lèi)有了之后就存在了,而實(shí)例成員必需在生成對(duì)象之后才存在。需在生成對(duì)象之后才存在。Java技術(shù)及其運(yùn)用技術(shù)及其運(yùn)用v 思索:思索:v this 關(guān)鍵字關(guān)鍵字 能否在類(lèi)方法中調(diào)用?為什么?能否在類(lèi)方法中調(diào)用?為什么?v class Rect v static double width; v static double height;v double area=0;v static double getArea() v double area=width*height;v return this.area;v v 思索思索2:v 在在Java編程中,
46、我們經(jīng)常用編程中,我們經(jīng)常用System.out.println()方法來(lái)方法來(lái)輸出字符串,也許我們都曾經(jīng)猜到輸出字符串,也許我們都曾經(jīng)猜到println()是方法名,但是方法名,但System是什么,是什么,out又是什么呢?又是什么呢?v 其實(shí)其實(shí)System是是java.lang包里面的一個(gè)類(lèi)包里面的一個(gè)類(lèi)v 而而out就是就是System類(lèi)里面的一個(gè)靜態(tài)成員變量,其類(lèi)型類(lèi)里面的一個(gè)靜態(tài)成員變量,其類(lèi)型是是java.io.PrintStream類(lèi);類(lèi);v 被關(guān)鍵字被關(guān)鍵字static修飾的數(shù)據(jù)成員或方法可以直接經(jīng)過(guò)修飾的數(shù)據(jù)成員或方法可以直接經(jīng)過(guò)“類(lèi)類(lèi)名名.數(shù)據(jù)成員或數(shù)據(jù)成員或“類(lèi)名類(lèi)名
47、.方法來(lái)援用,而無(wú)須先建立對(duì)象方法來(lái)援用,而無(wú)須先建立對(duì)象。所以。所以System.out是運(yùn)用了是運(yùn)用了out這個(gè)靜態(tài)數(shù)據(jù)成;這個(gè)靜態(tài)數(shù)據(jù)成;v 而而out又是一個(gè)又是一個(gè)java.io.PrintStream類(lèi)的對(duì)象,所以類(lèi)的對(duì)象,所以out必然可以調(diào)用必然可以調(diào)用java.io.PrintStream類(lèi)里面的方法,類(lèi)里面的方法,println()就是就是java.io.PrintStream類(lèi)里的一個(gè)方法,它的類(lèi)里的一個(gè)方法,它的作用就是用來(lái)想控制臺(tái)輸出信息的作用就是用來(lái)想控制臺(tái)輸出信息的vclass Systemv static java.io.PrintStream out;vv/
48、System. outvclass PrintStream v println()vv/ System. out . println()包包(package)v由于由于Java編譯器為每個(gè)類(lèi)生成一個(gè)字節(jié)碼文件,編譯器為每個(gè)類(lèi)生成一個(gè)字節(jié)碼文件,且文件名與類(lèi)名一樣,且文件名與類(lèi)名一樣,v因此,同名的類(lèi)有能夠發(fā)生沖突。為理處理這一因此,同名的類(lèi)有能夠發(fā)生沖突。為理處理這一問(wèn)題,問(wèn)題,Java提供包來(lái)管理類(lèi)名空間。提供包來(lái)管理類(lèi)名空間。v比如:同一文件夾下,不能有一樣稱號(hào)的文件,比如:同一文件夾下,不能有一樣稱號(hào)的文件,而不同文件夾下的文件名可以一樣。而不同文件夾下的文件名可以一樣。v c:/我的音
49、樂(lè)我的音樂(lè)/國(guó)歌國(guó)歌.MP3v c:/我的音樂(lè)我的音樂(lè)/好聽(tīng)好聽(tīng)/國(guó)歌國(guó)歌.MP3v 包包(package)Ex1.javapublic class Ex1class Apackage p1;public class Ex1class Ap1.AEx2.javapublic class Ex2class Apackage p2;public class Ex2class Ap2.Apackage語(yǔ)句語(yǔ)句vpackage語(yǔ)句作為語(yǔ)句作為Java源文件的第一條語(yǔ)句,指源文件的第一條語(yǔ)句,指明該文件中定義的類(lèi)所在的包。明該文件中定義的類(lèi)所在的包。(假設(shè)缺省該語(yǔ)句假設(shè)缺省該語(yǔ)句,那么指定為無(wú)名包,那么
50、指定為無(wú)名包)。它的格式為:。它的格式為:vpackage pkg1.pkg2.pkg3;vJava編譯器把包對(duì)應(yīng)于文件系統(tǒng)的目錄管理,編譯器把包對(duì)應(yīng)于文件系統(tǒng)的目錄管理,package語(yǔ)句中,用語(yǔ)句中,用 . 來(lái)指明目錄的層次;來(lái)指明目錄的層次;vpackage語(yǔ)句語(yǔ)句package p1;public class Ex1class Ap1.Ap1/A.classpackage p2;public class Ex2class Ap2.Ap2/A.classvpackage 的實(shí)踐含義是指:定義當(dāng)前的實(shí)踐含義是指:定義當(dāng)前java文件所文件所在的文件夾途徑,以及生成字節(jié)碼文件的途徑在的文件夾
51、途徑,以及生成字節(jié)碼文件的途徑命令行下編譯和運(yùn)轉(zhuǎn)帶包的命令行下編譯和運(yùn)轉(zhuǎn)帶包的Java程序程序v假設(shè)無(wú)假設(shè)無(wú)package語(yǔ)句,類(lèi)都放入缺省的無(wú)名包語(yǔ)句,類(lèi)都放入缺省的無(wú)名包中,對(duì)應(yīng)于當(dāng)前文件夾;中,對(duì)應(yīng)于當(dāng)前文件夾;v假設(shè)有假設(shè)有package p1;vpackage p1;vpublic class Ex1vv Ex1類(lèi)放入類(lèi)放入p1包內(nèi)包內(nèi),v對(duì)應(yīng)于文件目錄:當(dāng)前目錄下創(chuàng)建對(duì)應(yīng)于文件目錄:當(dāng)前目錄下創(chuàng)建p1文件文件夾,下放夾,下放Ex1.java文件文件v編譯方式:編譯方式:javac p1Ex1.javav運(yùn)轉(zhuǎn)方式:運(yùn)轉(zhuǎn)方式:java p1.Ex1v練習(xí)練習(xí)package s1.s2.
52、s3.s4;public class Hello如何存放如何存放Hello.java文件?文件?如何編譯和運(yùn)轉(zhuǎn)?如何編譯和運(yùn)轉(zhuǎn)?當(dāng)前文件夾下創(chuàng)建當(dāng)前文件夾下創(chuàng)建s1,再創(chuàng)建,再創(chuàng)建s2,再創(chuàng)建,再創(chuàng)建s3,再創(chuàng)建再創(chuàng)建s4,在,在s4里面放里面放Hello.java在當(dāng)前文件夾下在當(dāng)前文件夾下javac s1s2s3s4Hello.java在當(dāng)前文件夾下在當(dāng)前文件夾下java s1.s2.s3.s4.HelloJava技術(shù)及其運(yùn)用技術(shù)及其運(yùn)用JCreator處置帶包的處置帶包的Java程序程序package p1;public class Ex1class AJcreator不需把源文件放入不
53、需把源文件放入p1中,自動(dòng)在當(dāng)前文件中,自動(dòng)在當(dāng)前文件夾下創(chuàng)建子目錄夾下創(chuàng)建子目錄p1,并將生成的字節(jié)碼文件,并將生成的字節(jié)碼文件Ex1.class和和A.class存入其中。存入其中。Java技術(shù)及其運(yùn)用技術(shù)及其運(yùn)用v同一個(gè)包,即同一個(gè)文件夾下的類(lèi)可以相互調(diào)用同一個(gè)包,即同一個(gè)文件夾下的類(lèi)可以相互調(diào)用,假設(shè)屬于不同包的類(lèi),怎樣處置?,假設(shè)屬于不同包的類(lèi),怎樣處置?v import命令命令import語(yǔ)句語(yǔ)句v為了能運(yùn)用不在同一個(gè)包中的其他類(lèi),我們需求為了能運(yùn)用不在同一個(gè)包中的其他類(lèi),我們需求用用import語(yǔ)句來(lái)引入所需求的類(lèi)。語(yǔ)句來(lái)引入所需求的類(lèi)。vimport package1.pack
54、age2. (classname |*);v例如:例如:vimport java.awt.*;v import java.util.Date;vJava編譯器為一切程序自動(dòng)引入包編譯器為一切程序自動(dòng)引入包java.lang,因,因此不用用此不用用import語(yǔ)句引入它所包含的一切類(lèi)。語(yǔ)句引入它所包含的一切類(lèi)。import語(yǔ)句語(yǔ)句vimport java.util.Date;vjava/util/Date.classv當(dāng)前目錄下沒(méi)有當(dāng)前目錄下沒(méi)有java文件夾???文件夾???v包的根目錄由包的根目錄由classPath決議。決議。vclassPath:vc:/Program files/java/
55、jdk1.6/jre/lib/rt.jar;.;v思索:如何引入自定義包?思索:如何引入自定義包?Java技術(shù)及其運(yùn)用技術(shù)及其運(yùn)用v 之前,我們做的一切實(shí)驗(yàn),都沒(méi)有定義包,假設(shè)一個(gè)源文件之前,我們做的一切實(shí)驗(yàn),都沒(méi)有定義包,假設(shè)一個(gè)源文件沒(méi)有運(yùn)用包語(yǔ)句,那么得到的類(lèi)沒(méi)有包名,該類(lèi)假設(shè)被運(yùn)用沒(méi)有運(yùn)用包語(yǔ)句,那么得到的類(lèi)沒(méi)有包名,該類(lèi)假設(shè)被運(yùn)用,必需放在需運(yùn)用工程的目錄下。,必需放在需運(yùn)用工程的目錄下。v 但是,假設(shè)有其他包中的類(lèi)名和該無(wú)包類(lèi)的類(lèi)名一樣,就能但是,假設(shè)有其他包中的類(lèi)名和該無(wú)包類(lèi)的類(lèi)名一樣,就能夠產(chǎn)生混淆。夠產(chǎn)生混淆。v 比如:現(xiàn)有工程下有一個(gè)無(wú)名包中的類(lèi)比如:現(xiàn)有工程下有一個(gè)無(wú)名包
56、中的類(lèi) A;經(jīng)過(guò);經(jīng)過(guò)import又引又引入了一個(gè)類(lèi):入了一個(gè)類(lèi):tom.A,那么默許情況下,那么默許情況下,v A類(lèi)以為是類(lèi)以為是tom.A。v 正確的運(yùn)用方法是:正確的運(yùn)用方法是: v tom.A a=new tom.A; /tom.A類(lèi)類(lèi)v A a=new A; /無(wú)名包無(wú)名包A類(lèi)類(lèi)v import語(yǔ)句語(yǔ)句import java.util. Date ;class myDate Date date=new Date();Class myDate java.util.Date date=new java.util.Date();小結(jié)小結(jié)package p1; 即指明當(dāng)前即指明當(dāng)前java文
57、件的包途徑,方面文件的包途徑,方面進(jìn)展工程管理。進(jìn)展工程管理。Import ,引入其他包中的類(lèi),假設(shè)引入自定義包中,引入其他包中的類(lèi),假設(shè)引入自定義包中的類(lèi),需求在環(huán)境變量中設(shè)置的類(lèi),需求在環(huán)境變量中設(shè)置CLASSPATH。Import 其他包中的類(lèi)時(shí),普通情況下,最好把類(lèi)和其他包中的類(lèi)時(shí),普通情況下,最好把類(lèi)和包的全名都寫(xiě)上。即:包的全名都寫(xiě)上。即: import a.b.c /引入引入a.b下的下的c類(lèi)類(lèi) a.b.c test=new a.b.c; 而不要寫(xiě)成而不要寫(xiě)成c test=new c; 小結(jié):小結(jié):Java程序構(gòu)造程序構(gòu)造package p;import ;import ;cla
58、ss class public class .Java技術(shù)及其運(yùn)用技術(shù)及其運(yùn)用0-1個(gè)個(gè)0-多個(gè)多個(gè)0-多個(gè)多個(gè)1個(gè)個(gè)訪問(wèn)權(quán)限訪問(wèn)權(quán)限class 類(lèi)名類(lèi)名成員變量;成員變量;成員方法;成員方法;類(lèi)名類(lèi)名 對(duì)象名對(duì)象名=new 類(lèi)名類(lèi)名();對(duì)象名對(duì)象名.成員變量;成員變量;Java技術(shù)及其運(yùn)用技術(shù)及其運(yùn)用成員的訪問(wèn)權(quán)限成員的訪問(wèn)權(quán)限v對(duì)類(lèi)的成員施以一定的訪問(wèn)權(quán)限限定,實(shí)現(xiàn)類(lèi)中成對(duì)類(lèi)的成員施以一定的訪問(wèn)權(quán)限限定,實(shí)現(xiàn)類(lèi)中成員在一定范圍內(nèi)的信息隱藏員在一定范圍內(nèi)的信息隱藏v同一個(gè)類(lèi)中同一個(gè)類(lèi)中 同一個(gè)包中同一個(gè)包中 不同包中的子類(lèi)不同包中的子類(lèi) 不同包中的非子類(lèi)不同包中的非子類(lèi)vprivatevd
59、efaultvprotectedvpublic成員的訪問(wèn)權(quán)限成員的訪問(wèn)權(quán)限vprivate:同類(lèi)。同類(lèi)。vdefault:同類(lèi),同包。默許情況下都是同類(lèi),同包。默許情況下都是default。vprotected:同類(lèi),同包,子類(lèi)不一定要同包同類(lèi),同包,子類(lèi)不一定要同包v處在不同包中的子類(lèi)可以訪問(wèn)父類(lèi)中限定為處在不同包中的子類(lèi)可以訪問(wèn)父類(lèi)中限定為protected的成員,但這時(shí)訪問(wèn)這些成員的對(duì)象必的成員,但這時(shí)訪問(wèn)這些成員的對(duì)象必需具有子類(lèi)的類(lèi)型或是子類(lèi)的子類(lèi)類(lèi)型,而不能需具有子類(lèi)的類(lèi)型或是子類(lèi)的子類(lèi)類(lèi)型,而不能是父類(lèi)類(lèi)型。是父類(lèi)類(lèi)型。vpublic:一切一切privateclass Tompr
60、ivate float weight;private float f(float a,float b)return a+b;class Jerryvoid g()Tom cat=new Tom();cat.weight=23f;float sum=cat.f(3,4);Java技術(shù)及其運(yùn)用技術(shù)及其運(yùn)用publicclass Tompublic float weight;public float f(float a,float b)return a+b;class Jerryvoid g()Tom cat=new Tom();cat.weight=23f;float sum=cat.f(3,4)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年臨時(shí)搬運(yùn)合同
- 2024年度某新能源汽車(chē)制造技術(shù)許可合同
- 2024年度文化娛樂(lè)活動(dòng)策劃合同
- 2024年廣播劇配音委托合同
- 2024年建筑工程地面建設(shè)合同
- 企業(yè)普通員工年終個(gè)人工作總結(jié)
- 2024年度風(fēng)力發(fā)電設(shè)備安裝合同
- 節(jié)能宣傳課件教學(xué)課件
- 2024醫(yī)療機(jī)構(gòu)人力資源共享與培訓(xùn)合同
- 2024年度碎石料供需合同
- 護(hù)士與醫(yī)生的合作與溝通
- GB 42295-2022電動(dòng)自行車(chē)電氣安全要求
- 產(chǎn)品系統(tǒng)設(shè)計(jì)開(kāi)發(fā) 課件 第4、5章 產(chǎn)品系統(tǒng)設(shè)計(jì)類(lèi)型、產(chǎn)品系統(tǒng)設(shè)計(jì)開(kāi)發(fā)綜合案例
- 1編譯原理及實(shí)現(xiàn)課后題及答案
- 焊接材料的質(zhì)量控制和追溯規(guī)范
- 讓閱讀成為習(xí)慣家長(zhǎng)會(huì)課件
- 家庭健康照護(hù)服務(wù)方案
- 施工方案 誰(shuí)編
- 滬教牛津版八上英語(yǔ)Unit-6-單元完整課件
- 新能源及多能互補(bǔ)互補(bǔ)技術(shù)
- 混凝土攪拌站安裝及拆除方案
評(píng)論
0/150
提交評(píng)論