封裝繼承多型
阿新 • • 發佈:2019-02-13
通過面向物件分析
最佳情況:物件的使用,只用一種程式碼,//封裝的概念:
內部封裝所有不變的程式碼,對外開放變化的程式碼
方法封裝,封裝複雜性,對外開放簡單方法
比如:屬性,可以讓外界刪除、修改,取值,那就開放
方法:把所有複雜邏輯封裝在方法裡。對外開放參數和返回值 //建構函式存在的意義:
重要的意義,只需要賦值而不用取值的屬性做成私有的,通過建構函式賦值(面向物件的封裝)
初始化所有屬性(開發規範) //什麼時候屬性做成開放的:
這個屬性可以任意取值賦值 //什麼時候給屬性定義 get set方法
以下情況時:需要用set方法做屬性值校驗, 需要用get方法處理屬性格式
繼承:
父類私有的屬性,不會被子類繼承
public 所有類都能用
//super.屬性和this.屬性的區別
當子類沒有此屬性時,super.屬性與this.屬性一樣
當子類有此屬性時,super.屬性是父類的屬性,this.屬性是子類的屬性
//super的使用:super只能出現在子類的方法和構造方法中
super呼叫構造方法時,只能是第一句
super不能訪問子類的private成員
eg:
public class Car {
private int site = 4; //座位數
Car(){
System.out.println ("載客量是"+site+"人");
}
public void setSite(int site){
this.site = site;
}
void print(){
System.out.print("載客量是"+site+"人");
}
}
class Bus extends Car {
Bus(int site){
setSite(site);
}
}
//方法重寫的規則:
方法名相同
引數列表相同
返回值型別相同或者是其子類
訪問許可權不能嚴於父類
//抽象類和抽象方法:
抽象類不能被例項化
抽象類可以有0~多個抽象方法
非抽象子類必須重寫父類的所有抽象方法
//final修飾符
修飾的類,不能再被繼承
修飾的方法,不能被子類重寫
修飾的變數將變成常量,只能在初始化時進行賦值
實現多型的兩種形式:
使用父類作為方法形參實現多型
使用父類作為方法返回值實現多型