1. 程式人生 > >封裝繼承多型

封裝繼承多型

通過面向物件分析

最佳情況:物件的使用,只用一種程式碼,

//封裝的概念:
內部封裝所有不變的程式碼,對外開放變化的程式碼
方法封裝,封裝複雜性,對外開放簡單方法
比如:屬性,可以讓外界刪除、修改,取值,那就開放
方法:把所有複雜邏輯封裝在方法裡。對外開放參數和返回值   //建構函式存在的意義:
重要的意義,只需要賦值而不用取值的屬性做成私有的,通過建構函式賦值(面向物件的封裝)

初始化所有屬性(開發規範)   //什麼時候屬性做成開放的:
這個屬性可以任意取值賦值   //什麼時候給屬性定義 get set方法
以下情況時:需要用set方法做屬性值校驗, 需要用get方法處理屬性格式 

繼承:

父類私有的屬性,不會被子類繼承

protected 定義的 子類可以使用
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修飾符

修飾的類,不能再被繼承
修飾的方法,不能被子類重寫
修飾的變數將變成常量,只能在初始化時進行賦值

實現多型的兩種形式:

使用父類作為方法形參實現多型
使用父類作為方法返回值實現多型