堆棧、構造函數、繼承、多態等總結

 

 1Import 用來引入其他包中你所需要的類,但不能找到沒有包的類。

 

2.堆(Heap)和棧(Stack)的區別:(它們均由JVM虛擬機管理分配)

         用來存放所有的對象,包括所有的實例變量,其空間在程序運行時分配

        用來存放方法調用和局部變量

                         name  age

Student  s0 = new Student(“xiaowang”,20);

                 s0 = new Student(“wangpeng”,30);

當讀到該語句時,棧中創建s0name age並賦值name = “text”,age = 20;

new的時候堆創建實例和實例變量,並拷貝name age的值,this.name =“text”,this.age = 20;

然後new中的”=”號使得s0指向創建的實例對象。當s0new一個實例的時候原來的指向消失,指向一個新的實例,原來的實例被垃圾回收。

3. 構造函數

         構造函數在被賦值前被調用(如2中的new),主要實現對象的初始化。構造函數沒有返回值,即使是void類型也會報錯!子類的構造函數通過super()調用父類構造函數。如果父類中定義了帶參的構造函數,則子類構造函數必須在第一行調用相應的帶參super(),否則出錯。構造函數可以重載但不能被繼承。可以在構造方法的第一行使用this關鍵字調用其它(重載的)構造方法

Eg:   Class Person{

Person(int a,int b){}

Person(){

This(20,30);

}

}

4.成員變量初始化的默認值

 

5.對象中屬性和方法的可見度:

         Public: 通用

Protected: 同類,同包, 不同包中子類的方法中通過supper.(方法/屬性)來訪問

Default: 默認,即不寫的時候。同類, 同包

Private: 只能同類中

6.方法內定義變量時:

除了final外不能使用其他的修飾符;在使用之前必須初始化,但如果沒有使用可以不初始化

7. ==equals的區別

==用於比較兩個primitive 主數據類型或者判斷兩個引用是否引用同一個對象

Equals主要用來比較兩個字符串是否一樣,返回一個boolean;

用法:String str1 = "aa";

      String str2 = "aa";

      if(str1.equals(str2)){}

8.  繼承:

Is – a  Has –a當兩個類滿足這兩種模型時才能繼承。Java不能多繼承

9.重載(overload)和重寫(override)的區別:

重寫方法必須和被重寫方法具有相同的方法名稱、參數列表和返回值類型

重寫方法不能使用比被重寫方法更嚴格的訪問權限

不能拋出更大的異常

         重載只是參數列表不同而已,可以看成是互不相關的幾個方法

10.多態(有點難)

一個引用類型變量可能指向(引用)多種不同類型的對象

§         Person p = new Student();

§         Object o = new Person();

§         o = new Student();       

一個引用類型變量如果聲明爲父類的類型,但實際引用的是子類對象,那麼該變量就不能再訪問子類中添加的屬性和方法。SchoolStudent類添加的屬性。

§              Student m = new Student();

§              m.school = "pku";   //合法

§              Person e = new Student();

§              e.school = "pku";      //非法

11造型(對象間的強制類型轉換):

從子類到父類的類型轉換可以自動進行

從父類到子類的類型轉換必須通過造型(強制類型轉換)實現

無繼承關係的引用類型間的轉換是非法的

     Animal a = new Dog();                 

     Dog d = (Dog)a;                              

     //error子類也不能接收子類的實例        

     Animal a = new Animal();但這樣就出錯了

     Dog d = (Dog)a;

     //errorDog就只能接收Dog類型

12.其他:

         Instanceof用於判斷一個實例是否是另一個類的實例。用法if(e instanceof Student)返回一個boolean值。

 

發佈了26 篇原創文章 · 獲贊 5 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章