java教程--類與對象.ppt_第1頁
java教程--類與對象.ppt_第2頁
java教程--類與對象.ppt_第3頁
java教程--類與對象.ppt_第4頁
java教程--類與對象.ppt_第5頁
已閱讀5頁,還剩100頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

4.類與對象,主講:王華彬,知識點,變量作用域 構(gòu)造方法 方法重載 參數(shù)傳遞 實例成員和類成員 package import 訪問權(quán)限 可變參數(shù),Java技術(shù)及其應用,面向?qū)ο蟮娜齻€特性: 封裝、繼承和多態(tài) 本章學習封裝性,類的封裝性體現(xiàn)在,把一類事物所具有的相同的屬性和方法封裝在一起。 然后通過定義該類的一個對象,進而對該對象的屬性賦值,調(diào)用類的方法,從而完成一定的功能,封裝性,汽車類: CLASS car 屬性: 顏色, 灰色、紅色、黃色 品牌, 法拉利、現(xiàn)代、馬自達 類型, 賽車、轎跑車、SUV 方法: 啟動 前進 倒車 熄火 car 羅院長的車 =new car(); 羅院長的車.carColor=gray;羅院長的車.carBrand=現(xiàn)代; 羅院長的車.carStart();羅院長的車.carStop();,封裝性,手機類: CLASS phone 屬性: 顏色, 灰色、紅色、黃色 品牌, 蘋果、谷歌、三星 類型, 觸屏、直板、翻蓋 方法: 開機 撥號 掛斷 關(guān)機 phone 王瑋的手機 =new phone(); 王瑋的手機.phoneColor=gray;王瑋的手機.phoneBrand=諾基亞*; 王瑋的手機.phonePoweron();王瑋的手機.phonePoweroff();,類定義的一般要求,class Rect double width; double height; double getArea() double area=width*height; return area; 要求:類名是合法標示符,且容易理解 定義一個類包括三步: 取類名 定義屬性 定義方法,類定義的一般要求,class car int carBrand; char carColor; int carKind; /屬性一般寫在方法前習慣先定義屬性,再定義方法; /一行只定義一個屬性,不提倡int carBrand , carKind; /變量首字母小寫,第2個單詞開始字母大寫 int startCar(); int forward(); int reversing(); int stopCar(); ; /方法 函數(shù) ,類的屬性 或稱為成員變量,類的屬性初始值,class Rect double width; double height; double getArea() double area=width*height; return area; ,Java技術(shù)及其應用,class 類名 成員變量; 成員方法; ,width=0.0; height=0.0;,類成員變量可以不賦初值,默認0,false; 局部變量需要賦初值。,類的屬性初始值,class Rect double width=1; double height; double getArea() double area=width*height; return area; class test public static void main(String args) Rect r=new Rect(); System.out.println(r.width); System.out.println(r.height); 思考:程序的輸出?,Java技術(shù)及其應用,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=height; ,Java技術(shù)及其應用,成員變量,方法體內(nèi)局部變量,方法的參數(shù)變量,成員變量,即屬性的有效區(qū)是整個類; 方法中的局部變量的有效區(qū)是該方法; 方法的參數(shù)的有效區(qū)在該方法中; 當成員變量和方法的局部變量或方法的參數(shù)變量相同時,成員變量被隱藏, 即:成員變量在方法中暫時失效,Java技術(shù)及其應用,this關(guān)鍵字,當成員變量被同名的局部變量或方法的參數(shù)變量隱藏時(即成員變量在方法中暫時失效), 為了表示成員變量,可以用this.成員變量為指代 this指向調(diào)用該成員方法的對象。 Rect r=new Rect (); this可以理解是r的引用,變量作用域例題,class Variable int x=10;/成員變量 int y; void init() int x=5; y=x; System.out.println(y); 思考:程序輸出?,/此時y=x=5,變量作用域例題,class Variable int x=10;/成員變量 int y; void init() int x=5; y=this.x; System.out.println(y); ,/此時y=x=10,class Variable int 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(v.x+“ “+v.y+“ “+v.z); v.init(20,30); System.out.println(v.x+“ “+v.y+“ “+v.z);,20,30,v.x=20,v.y=30,再來一個例題,public class A void 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ù)及其應用,編譯錯,錯在哪兒?,Z的有效區(qū)在if; i的有效區(qū)在for,課后習題4-8,class B int x=100,y=200; public void setX(int x) x=x; public void setY(int y) this.y=y; public int getXYSum() return x+y; ,Java技術(shù)及其應用,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,變量作用域知識點小結(jié),類的成員方法中定義的局部變量或成員方法的參數(shù)變量都會隱藏掉同名的類的成員變量, 這時可以使用this關(guān)鍵字來表示同名的類的成員變量 this關(guān)鍵字指向調(diào)用該成員方法的對象。,Java技術(shù)及其應用,已經(jīng)介紹了類的屬性,接下來是: ? 類的方法 或稱為成員函數(shù) 1、構(gòu)造方法 2、成員方法,構(gòu)造方法,public class Example public static void main(String args) Rect r1= new Rect(); /創(chuàng)建對象 r1.width=128;/使用對象 r1.height=69; double area=r1.getArea(); System.out.println(“rectangle的面積:“+area); ,Java技術(shù)及其應用,分配空間,并初始化對象,調(diào)用構(gòu)造方法,構(gòu)造方法,class Rect double width; double height; double getArea() double area=width*height; return area; ,Java技術(shù)及其應用,Rect() ,構(gòu)造方法是一種特殊的方法 構(gòu)造方法名和類名相同 無返回類型 構(gòu)造方法在new創(chuàng)建對象時被調(diào)用 若無構(gòu)造方法,按照默認的構(gòu)造方法僅分配空間 構(gòu)造方法可以重載,Rect r1=new Rect();,構(gòu)造方法: 是一個函數(shù) 和類同名 對類的屬性進行賦值 可以重載,,構(gòu)造方法的重載,class Rect double width; double height; Rect() width=10.0; height=20.0; Rect(double x,double y) width=x; height=y; double getArea() ,構(gòu)造方法名相同,而 參數(shù)的個數(shù)或類型不同,Rect() ,構(gòu)造方法的調(diào)用,public class Example public static void main(String args) Rect r1= new Rect(); /創(chuàng)建對象 double area1=r1.getArea(); Rect r2= new Rect(1,2); /創(chuàng)建對象 double area2=r2.getArea(); ,Java技術(shù)及其應用,一個類可以定義多個構(gòu)造方法,根據(jù)參數(shù)個數(shù)或類型不同, 使用不同的構(gòu)造方法, 構(gòu)造函數(shù)作用是:為對象分配內(nèi)存空間,為對象的屬性賦初始值,方法重載(Method Overloading),多個方法可以享有相同的名字 方法的參數(shù)必須不同 或者是參數(shù)個數(shù)不同; 或者是參數(shù)類型不同; 完成的功能相似 返回類型不能作為區(qū)分函數(shù)重載的標準,方法重載的好處,要打印不同類型的數(shù)據(jù):int, float, String,不需要定義不同名的方法名: printInt(int); printFloat(float); printString(String); 利用方法重載,只需要定義一個方法名print(),接收不同的參數(shù): print(int); print(float); print(String);,class MethodOverloading void receive(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) System.out.println(“Receive a string “); System.out.println(“s=“+s); ,方法重載例題,public class MethodOverloadingTest public 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ā)送消息給某個對象, 讓該對象自行決定響應何種行為。,書上例題4-11,見.Java文件,Java技術(shù)及其應用,練習,課后習題4-10,Java技術(shù)及其應用,小結(jié),構(gòu)造方法 構(gòu)造方法是一種特殊的方法 方法名和類名相同 無返回類型 構(gòu)造方法在new創(chuàng)建對象時被調(diào)用 若無構(gòu)造方法,按照默認的構(gòu)造方法僅分配空間 構(gòu)造方法可以重載,即可以有多個構(gòu)造方法,Java技術(shù)及其應用,類的方法,與c語言的函數(shù)定義基本相同,只不過在類中稱為方法,在此不再贅述 。 需要注意的是:在方法體內(nèi),成員變量和局部變量的區(qū)別。其實可以把成員變量當做全局變量理解即可。,小結(jié),方法重載 多個方法可以享有相同的名字 方法的參數(shù)必須不同 或者是參數(shù)個數(shù)不同; 或者是參數(shù)類型不同; 完成的功能相似 返回類型不能作為區(qū)分函數(shù)重載的標準 體現(xiàn)面向?qū)ο蟮亩鄳B(tài)性,Java技術(shù)及其應用,類變量和簡單數(shù)據(jù)類型變量的區(qū)別,Circle c1; int i;,Java技術(shù)及其應用,只聲明,未分配空間,c1=null,聲明的同時分配空間,簡單數(shù)據(jù)類型變量,int i; i=1; int j; j=2; j=i;,Java技術(shù)及其應用,i,j,1,2,1,i和j分別指向兩塊不同的內(nèi)存區(qū)域。 j=I;把i中的內(nèi)容復制到j(luò)中;,類變量,Java技術(shù)及其應用,Circle c1; c1=new Circle(); Circle c2; c2=new Circle(); c2=c1;,c1,c2,c1和c2指向同一塊內(nèi)存區(qū)域。 c2=c1;c2相當于c1的引用; 此時,c2原來的內(nèi)存空間被釋放;,幾條注意事項,1、不要定義沒有實體的類的空對象,必需通過 new+構(gòu)造函數(shù)創(chuàng)建對象; 2、對象的名字,可以認為是該對象對應內(nèi)存區(qū)域的一個引用,即:一個別名。如果對象直接進行賦值,則原先的內(nèi)存被釋放。 3、在java語言中,類只有構(gòu)造方法,沒有析構(gòu)方法,只是因為java語言有垃圾回收機制。這也正是java程序一般很少有內(nèi)存泄露的原因。,已經(jīng)介紹了類的屬性和方法, 包括:成員變量的作用域 構(gòu)造函數(shù)及重載 對象創(chuàng)建的原理 接下來,介紹一下方法的參數(shù)傳遞中的注意事項,成員方法參數(shù),參數(shù)的類型: 簡單數(shù)據(jù)類型:傳值,不改變參數(shù)的值; 引用數(shù)據(jù)類型(數(shù)組類型、類或接口):傳地址,可改變參數(shù)的值; class Method void receive(int i)i=6; 在main函數(shù)中,執(zhí)行如下代碼,思考輸出? Method m=new Method (); int a=5; m. receive(a); System.out.println(a);,此時:a為全局變量,通過 參數(shù)i傳到receive方法中, i相當于a的復制品, i的改變不改變a的值,class Method void receive(int i)i=6; 在main函數(shù)中,執(zhí)行如下代碼,思考輸出? Method m=new Method (); float a=5; m. receive(a); System.out.println(a);,參數(shù)傳遞的值的級別 不能高于該參數(shù)值, 可以低于該參數(shù)值,參數(shù)傳遞,當傳遞的參數(shù)是簡單類型的時候,傳值,方法調(diào)用結(jié)束后原值不變; 當傳遞的參數(shù)是引用類型的時候,傳地址,方法調(diào)用結(jié)束后原值會變。 int a=5; void receive(int i)i=6;,Java技術(shù)及其應用,5,5,6,a,i,i,如果參數(shù)是引用的話: 當傳遞的參數(shù)是引用類型的時候,傳地址,方法調(diào)用結(jié)束后原值會變。 注意: 對象名是一種引用,5,a,i,6,i=6,再看一個綜合性的例子!,傳值和傳地址舉例,public class PassTest float 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=? ,練習,Java技術(shù)及其應用,課堂練習 : 請同學們思考結(jié)果,并解釋 public class Swap void 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); ,練習,Java技術(shù)及其應用,public class Swap1 int 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ù)是簡單類型的時候,傳值,方法調(diào)用結(jié)束后原值不變; 當傳遞的參數(shù)是引用類型的時候,傳地址,方法調(diào)用結(jié)束后原值會變。,Java技術(shù)及其應用,在之前的學習中,我們知道: 類的屬性和方法,必須先創(chuàng)建對象,然后通過對象調(diào)用,為什么輸出函數(shù)可以直接調(diào)用呢? System.out.println(); 請同學們思考: System是什么? Out是什么? println()是什么?,類成員 和實例成員 static關(guān)鍵字 靜態(tài)成員:靜態(tài)成員變量和靜態(tài)成員函數(shù),static關(guān)鍵字,class 類名 成員變量; 成員方法; class 類名 成員變量; 成員方法; ,static,static,實例成員,類成員或 靜態(tài)成員,類變量 和實例變量,類的組成部分是: 屬性和方法,及成員變量和成員函數(shù) 成員變量的類型分為兩種: class rect int weight; /實例變量 static int height; /類變量或靜態(tài)變量 ,由static修飾的成員變量,稱為類變量。 1、一個類的不同對象,分別分配空間,一個對象的實例變量改變,不影響其他類; 2、但是對于類變量,在字節(jié)碼文件加載到內(nèi)存時,如果沒有創(chuàng)建對象,實例變量就不分配內(nèi)存,而類變量分配了內(nèi)存,思考:意味著什么? 而且,所有的對象的類變量都共享同一個內(nèi)存,即:如果一個對象的類變量改變,其他對象的類變量也同時改變。,類成員和實例成員,類成員(屬性或方法) 用static修飾的成員; 屬于類; 所有對象共享一個類成員,只有一個。 實例成員(屬性或方法) 無static修飾的成員; 屬于對象; 每個對象都有各自的一個,相互獨立。,類成員和實例成員,類成員 用類名或?qū)ο竺麃碚{(diào)用; 對類成員的修改影響整個類的所有對象的類成員; 類成員方法只能對類成員變量進行操縱; 實例成員 用對象名來調(diào)用; 對某對象實例成員的修改不會影響其他對象的實例成員;,class Student String name; static String school=“北京大學“; class t public static void main(String args) System.out.println(Student.school);/正確 System.out.println(Student. name); /錯誤 Student stu1=new Student(); System.out.println(stu1.school); System.out.println(stu1. name); /對于類變量,可以在主函數(shù)中,不創(chuàng)建該類對象,而直接使用類名進行調(diào)用,也可以通過創(chuàng)建對象,通過對象進行調(diào)用,共享內(nèi)存,實例成員和類成員舉例,舉例memberTest.java,類memberTest,類變量a 實例變量b,方法,。,對象a,對象b,對象n,類變量a 實例變量b,函數(shù),類變量a 實例變量b,函數(shù),類變量a 實例變量b,函數(shù),類變量a,方法,實例成員方法在生成第一個對象時被分配了入口地址;,類成員方法在類被裝載內(nèi)存時被分配了入口地址;,Student.java,public class Student String name; static String school=“北京大學“; public static void main(String args) Student 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=“安徽大學“; System.out.println(+“,“+stu1.school); System.out.println(+“,“+stu2.school); System.out.println(+“,“+stu3.school); /思考程序的輸出結(jié)果 ,Java技術(shù)及其應用,對于方法,也分為:類方法和實例方法 class rect int start() /實例方法 static int stop /類方法 1、對于實例方法,只有創(chuàng)建對象后,通過對象調(diào)用。 2、對于類方法,可以不創(chuàng)建對象直接通過類名調(diào)用,也可以創(chuàng)建對象,通過對象調(diào)用。 3、實例方法可以調(diào)用實例變量和類變量,而類方法不能調(diào)用實例變量,思考為什么? 因為:類方法在對象創(chuàng)建之前就可以使用,而此時實例變量還沒有分配內(nèi)存。,class Student String name; static String school=“北京大學“; void start1() System.out.println(name); System.out.println(school); static void start() System.out.println(name); System.out.println(school); ,練習,class Student String name; static String school=“北京大學“; void start1() System.out.println(name); System.out.println(school); static void start() System.out.println(school); class t public static void main(String args) Student.start(); /類方法,可由類名直接調(diào)用 ,Java技術(shù)及其應用,main()方法,思考:為什么main()方法用static修飾? public class Student public static void main(String args) java 類名.main() Student .main() 一個類的main方法必須用static修飾,因為Java運行時系統(tǒng)在開始執(zhí)行一個程序前,并沒有生成類的一個實例,它只能通過類名來調(diào)用main方法作為程序的入口。,static關(guān)鍵字小結(jié),用static修飾的類中的成員變量或成員方法,都稱為類的成員;-類 沒有用static修飾的,稱為實例成員。-對象 類的成員唯一;而對象的成員有多個,每個相互獨立。 類的成員由類或?qū)ο髞碚{(diào)用;實例成員由對象來調(diào)用 類的成員在類有了之后就存在了,而實例成員必須在生成對象之后才存在。,Java技術(shù)及其應用,思考: this 關(guān)鍵字 能否在類方法中調(diào)用?為什么? class Rect static double width; static double height; double area=0; static double getArea() double area=width*height; return this.area; ,思考2:,在Java編程中,我們常常用System.out.println()方法來輸出字符串,也許我們都已經(jīng)猜到println()是方法名,但System是什么,out又是什么呢? 其實System是java.lang包里面的一個類 而out就是System類里面的一個靜態(tài)成員變量,其類型是java.io.PrintStream類; 被關(guān)鍵字static修飾的數(shù)據(jù)成員或方法可以直接通過“類名.數(shù)據(jù)成員”或“類名.方法”來引用,而無須先建立對象。所以System.out是應用了out這個靜態(tài)數(shù)據(jù)成; 而out又是一個java.io.PrintStream類的對象,所以out必然可以調(diào)用java.io.PrintStream類里面的方法,println()就是java.io.PrintStream類里的一個方法,它的作用就是用來想控制臺輸出信息的,class System static java.io.PrintStream out; / System. out class PrintStream println() / System. out . println(),包(package),由于Java編譯器為每個類生成一個字節(jié)碼文件,且文件名與類名相同, 因此,同名的類有可能發(fā)生沖突。為了解決這一問題,Java提供包來管理類名空間。 比如:同一文件夾下,不能有相同名稱的文件,而不同文件夾下的文件名可以相同。 c:/我的音樂/國歌.MP3 c:/我的音樂/好聽/國歌.MP3,包(package),Ex1.java public class Ex1 class A package p1; public class Ex1 class A p1.A,Ex2.java public class Ex2 class A package p2; public class Ex2 class A p2.A,package語句,package語句作為Java源文件的第一條語句,指明該文件中定義的類所在的包。(若缺省該語句,則指定為無名包)。它的格式為: package pkg1.pkg2.pkg3; Java編譯器把包對應于文件系統(tǒng)的目錄管理,package語句中,用 . 來指明目錄的層次;,package語句,package p1; public class Ex1 class A p1.A p1/A.class,package p2; public class Ex2 class A p2.A p2/A.class,package 的實際含義是指:定義當前java文件所在的文件夾路徑,以及生成字節(jié)碼文件的路徑,命令行下編譯和運行帶包的Java程序,若無package語句,類都放入缺省的無名包中,對應于當前文件夾; 若有package p1; package p1; public class Ex1 Ex1類放入p1包內(nèi), 對應于文件目錄:當前目錄下創(chuàng)建p1文件夾,下放Ex1.java文件 編譯方式:javac p1Ex1.java 運行方式:java p1.Ex1,練習,package s1.s2.s3.s4; public class Hello 如何存放Hello.java文件? 如何編譯和運行? 當前文件夾下創(chuàng)建s1,再創(chuàng)建s2,再創(chuàng)建s3, 再創(chuàng)建s4,在s4里面放Hello.java 在當前文件夾下javac s1s2s3s4Hello.java 在當前文件夾下java s1.s2.s3.s4.Hello,Java技術(shù)及其應用,JCreator處理帶包的Java程序,package p1; public class Ex1 class A Jcreator不需把源文件放入p1中,自動在當前文件夾下創(chuàng)建子目錄p1,并將生成的字節(jié)碼文件Ex1.class和A.class存入其中。,Java技術(shù)及其應用,同一個包,即同一個文件夾下的類可以互相調(diào)用,如果屬于不同包的類,怎么處理? import命令,import語句,為了能使用不在同一個包中的其他類,我們需要用import語句來引入所需要的類。 import package1.package2. (classname |*); 例如: import java.awt.*; import java.util.Date; Java編譯器為所有程序自動引入包java.lang,因此不必用import語句引入它所包含的所有類。,import語句,import java.util.Date; java/util/Date.class 當前目錄下沒有java文件夾!? 包的根目錄由classPath決定。 classPath: c:/Program files/java/jdk1.6/jre/lib/rt.jar;.; 思考:如何引入自定義包?,Java技術(shù)及其應用,之前,我們做的所有實驗,都沒有定義包,如果一個源文件沒有使用包語句,則得到的類沒有包名,該類如果被使用,必須放在需使用工程的目錄下。 但是,如果有其他包中的類名和該無包類的類名相同,就可能產(chǎn)生混淆。 比如:現(xiàn)有工程下有一個無名包中的類 A;通過import又引入了一個類:tom.A,則默認情況下, A類認為是tom.A。 正確的使用方法是: tom.A a=new tom.A(); /tom.A類 A a=new A(); /無名包A類,import語句,import java.util. Date ; class myDate Date date=new Date(); Class myDate java.util.Date date=new java.util.Date(); ,小結(jié),package p1; 即指明當前java文件的包路徑,方面進行工程管理。 Import ,引入其他包中的類,如果引入自定義包中的類,需要在環(huán)境變量中設(shè)置CLASSPATH。 Import 其他包中的類時,一般情況下,最好把類和包的全名都寫上。即: import a.b.c /引入a.b下的c類 a.b.c test=new a.b.c(); 而不要寫成c test=new c();,小結(jié):Java程序結(jié)構(gòu),package p; import ; import ; class class public class . ,Java技術(shù)及其應用,0-1個,0-多個,0-多個,1個,訪問權(quán)限,class 類名 成員變量; 成員方法; 類名 對象名=new 類名(); 對象名.成員變量;,Java技術(shù)及其應用,成員的訪問權(quán)限,對類的成員施以一定的訪問權(quán)限限定,實現(xiàn)類中成員在一定范圍內(nèi)的信息隱藏 同一個類中 同一個包中 不同包中的子類 不同包中的非子類 private default protected public ,成員的訪問權(quán)限,private:同類。 default:同類,同包。默認情況下都是default。 protected:同類,同包,子類(不一定要同包) 處在不同包中的子類可以訪問父類中限定為protected的成員,但這時訪問這些成員的對象必須具有子類的類型或是子類的子類類型,而不能是父類類型。 public:所有,private,class Tom private float weight; private float f(float a,float b) return a+b; class Jerry void g() Tom cat=new Tom(); cat.weight=23f; float sum=cat.f(3,4); ,Java技術(shù)及其應用,public,class Tom public float weight; public float f(float a,float b) return a+b; class Jerry void g() Tom cat=new Tom(); cat.weight=23f; float sum=cat.f(3,4); ,Java技術(shù)及其應用,default,class Tom float weight; float f(float a,float b) return a+b; class Jerry void g() Tom cat=new Tom(); cat.weight=23f; float sum=cat.f(3,4); ,Java技術(shù)及其應用,protected,class Tom protected float weight; protected float f(float a,float b) return a+b; class Jerry void g() Tom cat=new Tom(); cat.weight=23f; float sum=cat.f(3,4); ,Java技術(shù)及其應用,成員的訪問權(quán)限,對類的成員施以一定的訪問權(quán)限限定,實現(xiàn)類中成員在一定范圍內(nèi)的信息隱藏 同一個類中 同一個包中 不同包中的子類 不同包中的非子類 private default protected public ,練習,課后習題4-7,Java技術(shù)及其應用,訪問權(quán)限一般做法,class 類名 private folat height; private folat width; public void setHeight(float height) this.height=height; public void setWidth(float width) this.width=width; public float getHeight() r

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論