Day03(面向物件)
面向物件
構造器
-
一個類即使什麼都不寫,也會存在一個方法。
-
分為有參構造和無參構造(方法的過載)。
-
名字和類名相同。
-
沒有返回值。
作用
-
使用new關鍵字,本質是在呼叫構造器
-
初始化值
注意點
-
定義有參構造之後,如果想繼續使用無參構造,一定需要顯示定義一個無參的構造。
快捷鍵alt+ insert:快速生成構造器(有參無參均可)。
建立物件記憶體分析
簡單小結類與物件
-
類與物件
類是一個模版,物件是一個具體的例項。
-
方法的定義和呼叫
-
對應的引用
基本型別(8)
引用型別:物件是通過引用來操作的。
-
屬性: 欄位field 成員變數
預設初始化
數字: 0 0.0
char:u0000
boolean:false
引用:null
修飾符 屬性型別 屬性名=屬性值
-
物件的建立和引用
-
必須使用new關鍵字建立物件 構造器
Person xiaoming=new Person;
-
物件的屬性
xiaoming.nane;
-
物件的方法
xiaoming.sleep();
-
類:
靜態的屬性 屬性
動態的行為 方法
封裝
-
“高內聚,低耦合”。高內聚就是類的內部資料操作細節自己完成,不允許外部干涉;低耦合:僅暴露少量的方法給外部使用。
-
屬性私有 get/set
private String name;
public String getName(){
return this.name;
}
public void setName(String name){
this.name=name;
}
快捷鍵alt+insert:快速生成get/set方法。
作用
-
提高程式的安全性,保護資料。
-
隱藏程式碼的實現細節。
-
統一介面。
-
增加系統的可維護性。
繼承
-
繼承的本質是對某一批類的抽象。
-
extends的意思是“擴充套件”,子類是父類的拓展。子類繼承了父類,就會有父類的全部(public)方法。
私有(private)的東西無法被繼承。
class Student entends Person
public,Protected,Default,private
-
在Java中,所有的類,都預設直接或間接繼承object。
-
Java中類只有單繼承,沒有多繼承。
super詳解
-
呼叫父類的構造器,必須要在子類的構造器的第一行。
注意點
-
super呼叫父類的構造方法,必須在構造方法的第一個。
-
super只能出現在子類的方法或構造方法中。
-
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();//父類的引用指向了子類。
//靜態方法:方法的呼叫只和左邊,定義的資料型別有關。
//靜態方法和非靜態方法區別很大。
-
需要有繼承關係,子類重寫父類的方法。子類的方法和父類必須要一致,方法體不同。
-
-
引數列表必須相同。
-
修飾符:範圍可以擴大不能縮小。
-
丟擲的異常:範圍可以被縮小但不能擴大。public>Protected>Default>private
ClassNotFoundException-->Exception(大)不行,反之則可以。
-
為什麼需要重寫:父類的功能,子類不一定需要;父類的功能不一定能滿足子類的需求。