1. 程式人生 > 其它 >Day03(面向物件)

Day03(面向物件)

Day03

面向物件

構造器

  • 一個類即使什麼都不寫,也會存在一個方法。

  • 分為有參構造和無參構造(方法的過載)。

 

  1. 名字和類名相同。

  2. 沒有返回值。

作用

  1. 使用new關鍵字,本質是在呼叫構造器

  2. 初始化值

 

注意點

  1. 定義有參構造之後,如果想繼續使用無參構造,一定需要顯示定義一個無參的構造。

 

快捷鍵alt+ insert:快速生成構造器(有參無參均可)。

 

建立物件記憶體分析

 

簡單小結類與物件

  1. 類與物件

類是一個模版,物件是一個具體的例項。

  1. 方法的定義和呼叫

  2. 對應的引用

基本型別(8)

引用型別:物件是通過引用來操作的。

  1. 屬性: 欄位field 成員變數

預設初始化

數字: 0 0.0

char:u0000

boolean:false

引用:null

修飾符 屬性型別 屬性名=屬性值

  1. 物件的建立和引用

  • 必須使用new關鍵字建立物件 構造器

    Person xiaoming=new Person;
  • 物件的屬性

xiaoming.nane;
  • 物件的方法

    xiaoming.sleep();
  1. 類:

靜態的屬性 屬性

動態的行為 方法

 

封裝

  • “高內聚,低耦合”。高內聚就是類的內部資料操作細節自己完成,不允許外部干涉;低耦合:僅暴露少量的方法給外部使用。

  • 屬性私有 get/set

private String name;

public String getName(){
   return this.name;
}

public void setName(String name){
   this.name=name;
}

快捷鍵alt+insert:快速生成get/set方法。

作用

  1. 提高程式的安全性,保護資料。

  2. 隱藏程式碼的實現細節。

  3. 統一介面。

  4. 增加系統的可維護性。

 

繼承

  • 繼承的本質是對某一批類的抽象。

  • extends的意思是“擴充套件”,子類是父類的拓展。子類繼承了父類,就會有父類的全部(public)方法。

    私有(private)的東西無法被繼承。

class Student entends Person

public,Protected,Default,private

  • 在Java中,所有的類,都預設直接或間接繼承object。

  • Java中類只有單繼承,沒有多繼承。

super詳解

  • 呼叫父類的構造器,必須要在子類的構造器的第一行。

注意點

  1. super呼叫父類的構造方法,必須在構造方法的第一個。

  2. super只能出現在子類的方法或構造方法中。

  3. super和this不能同時呼叫構造方法。

和this的區別

代表的物件不同:

this:本身呼叫者這個物件

super:代表父類物件的引用

前提:

this:沒有繼承也能使用

super:只有在繼承條件下才可以使用

構造方法:

this():本類的構造

super():父類的構造

 

方法重寫

  • 重寫都是方法的重寫,和屬性無關。

public class B{
   public  void test(){
       System.out.println("B=>test()");
  }
}

public class A extends B{
   
   public  void test(){
       System.out.println("A=>test()");
  }
}

B b=new A();//子類重寫了父類的方法
b.test();//父類的引用指向了子類。
//靜態方法:方法的呼叫只和左邊,定義的資料型別有關。
//靜態方法和非靜態方法區別很大。
  • 需要有繼承關係,子類重寫父類的方法。子類的方法和父類必須要一致,方法體不同。

  1. 方法名必須相同。

  2. 引數列表必須相同。

  3. 修飾符:範圍可以擴大不能縮小。

  4. 丟擲的異常:範圍可以被縮小但不能擴大。public>Protected>Default>private

ClassNotFoundException-->Exception(大)不行,反之則可以。

  • 為什麼需要重寫:父類的功能,子類不一定需要;父類的功能不一定能滿足子類的需求。

快捷鍵 alt+insert 選擇override。