繼承和接口和java訪問權限修飾符總結_第1頁
繼承和接口和java訪問權限修飾符總結_第2頁
繼承和接口和java訪問權限修飾符總結_第3頁
繼承和接口和java訪問權限修飾符總結_第4頁
繼承和接口和java訪問權限修飾符總結_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 第三章,第四章內容總結 -Mr yang 多態(tài)性: 發(fā)送消息給某個對象,讓該對象自行決定響應何種行為。 通過將子類對象引用賦值給超類對象引用變量來實現動態(tài)方法調用。動態(tài)綁定: 一、使用父類類型的引用指向子類的對象; 二、該引用只能調用父類中定義的方法和變量; 三、如果子類中重寫了父類中的一個方法,那么在調用這個方法的時候,將會調用子類中的這個方法;(動態(tài)連接、動態(tài)調用) 四、變量沒有被重寫(覆蓋)的概念,”重寫“的概念只針對方法, 1.方法重載: 在同一個類中定義了兩個以上的同名的方法, 但是它們擁有不同的參數列表。 1.1重載的條件:參數不同a.個數不相同b.類型不同*c.順序不同注意:與

2、方法的返回類型無關,和訪問修飾符無關 2.方法重寫:在子類中定義了一個和父類中相同的方法,父類的方法在子類中就被覆蓋了(隱藏了). 3.動態(tài)綁定:父類的引用指向子類的對象,如果調用的方法在子類中被重寫,則調用子類重寫了的方法。如果調用的方法在父類中沒有定義,則報錯。訪問修飾符:1.tected3.private4.默認的方法修飾符:1.static:靜態(tài)方法中不能訪問非靜態(tài)的變量和方法,也不能使用this和super關鍵字 static 關鍵字修飾的代碼不依賴具體的對象實例. 總是比普通的代碼塊先加載2.final:能修飾類,方法,屬性。 2.1:final修飾類時:該類

3、不能被繼承. 2.2:final修飾方法時:該方法不能被重寫. 2.3:final修飾類的成員屬性時:聲明時就要賦值,或者在構造方法中給它賦值. final修飾類的屬性時:必須在聲明時賦值final修飾局部變量:如果在聲明時沒有賦值,則在后面的代碼中可以有一次給它賦值的機會,一旦賦值則該變量的值不可更改。 final修飾的變量是引用類型時指引用不能更改,引用指向的對象的屬性值是可以更改的. Final 表示最終的3.abstract:修飾類,方法. 抽象方法使用abstract修飾符修飾 抽象方法只能在抽象類中聲明。 即:如果一個類中存在一個或以上的抽象方法,則該類也要聲明為抽象類。 3.1:

4、抽象類不能實例化對象。 3.2:抽象類中可以有抽象方法,也可以有普通方法。 3.3:構造方法不能聲明為抽象的,因為子類無法覆蓋。 3.4:子類繼承抽象類時必須重寫父類中所有的抽象方法,否則自己也要聲明為抽象類. 3.5:可以聲明抽象類的引用指向子類的對象。 動態(tài)綁定 4 接口:關鍵字interface聲明接口。解決java不能多重繼承的機制。1.接口中的方法都是抽象的。2.接口中的方法默認時public和abstract,所以public和abstract可以省略.3.接口中可以聲明屬性,屬性默認為public static final4.接口使用關鍵字interface聲明,使用implem

5、ents實現接口. 問題: 接口和抽象的區(qū)別 ? 相同點 區(qū)別 : 繼承 : 代碼的可重用性抽象類 : 代碼的靈活性 固定的方法 (數據庫 )接口: 代碼的可擴展性 java訪問權限修飾符public  protected  default private用法總結       首先聲明:java中,default這個修飾符并沒有顯式的聲明,在成員變量和方法前什么修飾符也不用,默認的就是default。為了條理清晰,分三種不同情況來總結。   一 訪問權限修飾符修飾成員變量和方法   p

6、ublic:表明該成員變量和方法是共有的,能在任何情況下被訪問。      protected:必須在同一包中才能被訪問及其子類中可以(說的比較簡單,看個例子就明白了)           eg:class A                      protecte

7、d int weight;            protected int f( int a,int b   )                             / 方法體  &#

8、160;                                 假設B與A在同一個包中,則           class B      &

9、#160;               void g()                          A a=new A();        &

10、#160;     A.weight=100;/合法              A.f(3,4);    /合法                         

11、0; 特別說明:什么是在同一個包中?   答:用package打包在一起的class ,叫在同一個包中。(不明白,舉個例子)       eg:在JDK的srcjavaio中,你會看到許多java類,第一句源代碼都是package java.io;       沒有使用package打包的,在同一目錄下的類也會被視做同一個包。      default:在這種情況下中,同包中的子類。區(qū)別在第二和第三種情況中。 

12、60;      eg: class A                      int weight ;            int f( int a,int b   )    

13、60;                        / 方法體                            

14、        假設B與A在同一個包中,則           class B                      void g()        

15、60;                 A a=new A();              A.weight=100;/合法              A.f(3,4); 

16、0;  /合法                            private: 只能在本類中訪問。             eg:    class   Test

17、                                             private int money;    

18、60;                  Test()                                &

19、#160;                money=2000;                                 

20、             private int getMoney()                                   

21、             return money;                                    

22、60;        public  static  void main(String args)                                   &

23、#160;          Test te=new  Test();                         te.money=3000;         &#

24、160;   /合法                         int m=te.getMoney();       /合法            

25、60;            System.out.println("money="+m);                                &#

26、160;                                PS: 實際上,把重要的數據修飾為private,然后寫一個public的函數訪問它,正好體現了OOP的封裝特性,是OOP安全性的體現。    二  訪問權限修飾符修飾類   1

27、,不能用protected和private修飾類。   2,用default修飾的類叫友好類,在另外一個類中使用友好類創(chuàng)建對象時,要保證它們在同一包中。   三   訪問權限修飾符與繼承   這里的訪問修飾符指的是修飾成員變量和方法??梢苑譃閮煞N情況:   1,子類與父類在同一包中    此時只有聲明為private的變量與方法不能被繼承(訪問)。   eg:     class Father &

28、#160;          private int money ;       int weight=100;                  class Son extends Father          &#

29、160; viod f()                money=10000;/   非法         weight=100; /   合法                  2,子

30、類與父類不在同一包中    此時private與default均不能被繼承(訪問), protected與public可以。     eg:       Father.java      package com.aaa      public class Father         &#

31、160;  int height ;       protected  int money=120;       public int weight;       protected int getMoney()                return m

32、oney;              void setMoney(int newMoney)                money=newMoney;                 

33、      Son.java      package com.bbb      import com.aaa.Father;      public class Son extends Father               void f()  

34、                  money=10000;/合法           /height=170;/非法,height為default修飾的變量           System.out.println(money);/輸出結

35、果是10000           /setMoney(300);          /非法           int number=getMoney();    /合法         

36、  System.out.println(number);/輸出結果是10000                     public  static  void main(String args)                

37、      Son sss=new Son();            sss.f();                    所以,訪問權限修飾符權限從高到低排列是public  ,protected  ,default, private。Java

38、中的abstract,static,final修飾符abstract修飾符      abstract使用對象:類、接口、方法介紹:類中包括沒有實現的方法,不能被實例化。如果是一個abstract方法,則方法體為空,該方法的實現在子類中被定義,并且包含一個abstract方法的類必須是一個abstract類abstract修飾符表示所修飾的類沒有完全實現,還不能實例化。如果在類的方法聲明中使用abstract修飾符,表明該方法是一個抽象方法,它需要在子類實現。    在下面的情況下,類必須是抽象

39、類:    1.類中包含一個明確聲明的抽象方法;    2.類的任何一個父類包含一個沒有實現的抽象方法;    3.類的直接父接口聲明或者繼承了一個抽象方法,并且該類沒有聲明或者實現該抽象方法。    如下例所示:    abstract class A1            

40、public int v1;        abstract void test();        abstract class A2 extends A1             public int v2;        class

41、Sample extends A2             void test()         因為包含一個抽象方法test,類A1必須被聲明為抽象類。它的子類A2繼承了抽象方法test,但沒有實現它,所以它也必須聲明為抽象類。然而,A2的子類Sample因為實現了test,所以它不必聲明為抽象的。    注意:   

42、60;如果試圖創(chuàng)建一個抽象類的實例就會產生編譯錯誤;    如果一個類是非抽象類卻包含一個抽象方法,就會產生編譯錯誤;    構造函數和靜態(tài)函數以及Final修飾的函數不能使用abstract修飾符;    接口缺省為abstract。 Static修飾符static使用對象:類、方法、變量、初始化函數通常,在創(chuàng)建類的實例時,每個實例都會創(chuàng)建自己實例變量。但是在變量的聲明中可以使用Static修飾符,它表明該成員變量屬于類本身,獨立于類產生的任何對象。這種成員變量稱為靜態(tài)變量

43、(靜態(tài)屬性)。方法的聲明中也可以使用static修飾符,表明該方法從屬于類本身。靜態(tài)屬性和靜態(tài)方法不需要創(chuàng)建實例就可以使用。    典型的例子是java.lang包中的System類中的方法和變量。我們常用    System.out.println(“message”);    輸出信息,并沒有創(chuàng)建System的實例,是因為println方法聲明為System類的靜態(tài)方法,它不需創(chuàng)建實例就可以使用。    下面的例子會幫助你更深刻的理

44、解Static修飾符。注意各個代碼塊的加載次序。    class Sample            static int s1=3;        static int s2;        static void display()    &#

45、160;                System.out.println("s1="+s1);            System.out.println("s2="+s2);                s

溫馨提示

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

評論

0/150

提交評論