子類繼承父類的哪些成員


先寫父類還是先寫子類:
一般我們在開發中先編寫多個自定義類,寫完之后發現多個類之間存在相同的代碼,此時可以抽取一個父類。
我們以后做開發,都是基於框架/組件來做的,我們是在別人的基礎之上繼續開發。

好比別人提供清水房,我們只需要在清水房的基礎之上裝修,就可以使用。

以后,我們定義新的類回去繼承與框架中/組件中提供的父類。

--------------------------------------------

子類繼承父類之后,可以擁有父類的某些狀態和行為,(子類復用了父類的功能或狀態)。
子類繼承父類的哪些成員(根據訪問修飾符來判斷):

1:如果父類中的成員使用public修飾,子類無條件繼承。
2:如果父類中的成員使用protected修飾,子類也繼承,即使父類和子類不在同一個包中。
3:如果父類和子類在同一個包中,此時子類可以繼承父類中 缺省修飾符的成員。
4:如果父類中的成員使用private修飾,子類打死也都繼承不到。private只能在本類中訪問。
5:父類的構造器,子類也不能繼承,因為構造器必須和當前的類名相同。

-----------------------------------------------------------------------------------

方法重載和方法覆蓋(方法)的區別:
方法重載:Overload
方法重寫:Override

批判,本身二者一點關系都沒有,僅僅只是因為名字很像。

--------------------------------------------

方法重載:Overload
作用:解決了一個類中,相同功能的方法不同的問題。
既然是相同的功能,那么方法的名字就應該相同。
規則:兩同一不同
同類中,方法名相同,可能參數列表不同(參數類型、參數個數、參數循序)。
方法重寫:Override
作用:解決子類繼承父類之后,可能父類的某一個方法不滿足子類的集體特征,此時需要重新在新類中定義
該方法,並重新寫方法體;
規則:一同兩小,一大;
一同:父類和子類的方法簽名是相同的,所以。建議:直接拷貝父類中方法的定義到子類中,在重寫的方法體,就OK了;

 

--------------------------------------------------------------------

Super關鍵字

需求,在類中的某一個方法中,去調用父類唄覆蓋的方法;

此時的解決方法:使用super關鍵字:

this: 當前對象,誰調用this所在的方法,this就是哪一個對象。
super: 當前對象的父類對象。


------------------------------------------------------------------------


子類初始化過程:創建子類對象的過程:

在創建子類對象之前,會先創建父類對象,
調用子類構造器之前,在子類構造器中,會先調用父類的構造器,
默認調用的是父類無參數構造器....

1:如果父類不存在可以被子類訪問的構造器,則不能存在於子類;
2:如果父類沒有提供無參數構造器,子類必須顯示通過super語句去調用父類帶參數的構造器。
(必須先有父類對象,而后才有子類對象)
(必須先調用父類構造器,而后再調用子類構造器)

例子:

//父類
class Animal{
  private String name;//私有 名字
  private int age;//私有的字段名 年齡
  Animal(String name,int age){
  System.out.println("Animal構造器");
  this.name = name;
  this.age = age;
}

public String getName(){
  return name + "," + age;
  }
}
//子類
class Fish extends Animal{
  private String color;

  Fish(String name,int age,String color){
    super(name,age);
    this.color = color;
  }

  public void say(){
    System.out.println(getName() + "," + this.color);
  }

}


//子類初始化過程:創建子類對象的過程
public class EditPlus{
  public static void main(String[] args){
    Fish f = new Fish("Animal",5,"橙黃色");
    f.say();
  }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM