1. 程式人生 > >Java oop(一些自己的理解,並沒有展開很細)

Java oop(一些自己的理解,並沒有展開很細)

繼承 new .get 獲得 數量 語言 讀寫權限 訪問 setname

一下內容是自己總結用的,只是按照自己的理解去寫。參考的是菜鳥教程。
Java 是一個面向對象的語言。
OOP就是面向對象編程。
封裝:在某些類裏面,某些屬性不想向外暴露,但是我們又想提供一個方法去訪問或修改它,怎麽辦?
封裝此刻就是解決這個問題:
如有一個Student類

public class Student{
//構造函數,可以寫可以不寫,不寫就默認用Java提供的默認構造函數

private int number;

private String name;

public void setNumber(int number){
this.number = number;
}

public int getNumber(){
return this.number;
}

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

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

此刻,Student類的倆個屬性是private(私有)的,我們不能直接用:
Student stu = new Student();
stu.number = 4;
stu.name = "test";

但是方法是public(公共)的,我們可以通過調用這些方法去寫入或獲得這倆個私有屬性:
Student stu = new Student();
stu.setNumber(4);
stu.getNumber;
stu.setName("test");
stu.getName;

這就是對類的封裝,封裝有什麽好處?

1. 良好的封裝能夠減少耦合。


2. 類內部的結構可以自由修改。


3. 可以對成員變量進行更精確的控制:
類的成員變量可以成為只讀或者只寫的。
例如訪問器getXxxx();修改器setXxxx(); 通過這些可以控制讀寫權限


4. 隱藏信息,實現細節:
比如這是一個類中得到生日的方法
public String getBirthday(){
return year + "-" + month + "-" + day;
}

public void setBirthday(String birthday){
//拆分字符串,分別取出年月日,給year、month、day進行賦值
}

而在外部調用這個方法的時候
this.getBirthday();
this.setBirthday("1990-9-9");

此時就體現出外部是不知道如何儲存birthday這個方法的,用戶只能調用它。


繼承
Java裏,可以讓一個子類去extend(繼承)一個父類,並且一個子類只能繼承一個父類,
子類會繼承父類的所有方法。
而在這些方法中,只要不該方法名稱 和其參數類型和數量,只對方法裏面的代碼進行重寫,則叫重寫,
如果這些方法中,名稱不變,但是參數類型有變,或者參數數量有變,又或者倆者都有變,則叫重載。
重寫和重載是多態的一部分。

當然有可能父類是個抽喜類,子類繼承抽象類則要對父類裏的抽象方法加上具體的代碼,如果沒有則子類中的這個方法也要聲明為抽象方法,子類則聲明為抽象類,默認public。
由子子類去繼承實現抽象方法(你也可以繼續上面的情況)。

多態
一個工具,不同的使用就產生不同的結果或行為。
多用於接口?
其中重寫和重載是多態的重要部分。
重寫要有繼承,並且發生在倆個類之間(父子類)
重載發生在一個類之間。

Java oop(一些自己的理解,並沒有展開很細)