一、面向?qū)ο蠛兔嫦蜻^程的區(qū)別
面向過程 :是站著過程的角度思考問題楷怒,按功能的先后執(zhí)行順序垛吗,用函數(shù)一步步實現(xiàn)功能织堂,最后依次調(diào)用函數(shù)就可以了。面向過程最大的問題在于隨著系統(tǒng)的膨脹奶陈,面向過程將無法應(yīng)付易阳,最終導(dǎo)致系統(tǒng)的崩潰。
面向?qū)ο螅?站在對象的角度思考問題吃粒,我們把多個功能合理放到不同對象里潦俺,強調(diào)的是具備某些功能的對象。
Java面向?qū)ο蟮娜筇匦裕豪^承徐勃、多態(tài)事示、封裝。
二僻肖、繼承 - 父類和子類的關(guān)系
繼承就是子類繼承父類的特征和行為肖爵,使得子類對象(實例)具有父類的實例域和方法 。所以繼承需要符合的關(guān)系是:is-a檐涝,父類更通用遏匆,子類更具體。
好處:子類擁有父類的所有屬性和方法(除了private修飾的屬性不能擁有)從而實現(xiàn)了實現(xiàn)代碼的復(fù)用谁榜。
2.1 繼承和實現(xiàn)
類只能單繼承類幅聘,但可以實現(xiàn)多個接口。而接口只能繼承接口窃植,并且可以繼承多個接口帝蒿,不能使用implements關(guān)鍵字。
//類的單繼承和多實現(xiàn)
public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
//接口的多繼承
public interface BlockingDeque<E> extends BlockingQueue<E>, Deque<E>
2.2 類初始化順序
父類靜態(tài)變量-靜態(tài)代碼塊 -> 子類靜態(tài)變量-靜態(tài)代碼塊 -> 父類普通變量-普通代碼塊-構(gòu)造函數(shù) -> 子類普通變量-普通代碼塊-構(gòu)造函數(shù)
public class Father {
private static int i = 1;
private int j = 1;
static {
System.out.println("父類靜態(tài)代碼塊巷怜,i:" + i);
}
{
System.out.println("父類普通代碼塊葛超,j:" + j);
}
public Father() {
System.out.println("父類構(gòu)造器");
}
}
//Son
public class Son extends Father{
private static int i = 2;
private int j = 2;
static {
System.out.println("子類靜態(tài)代碼塊,i:" + i);
}
{
System.out.println("子類普通代碼塊延塑,j:" + j);
}
public Son() {
System.out.println("子類構(gòu)造器");
}
public static void main(String[] args) {
new Son();
}
}
三绣张、多態(tài) - 子類與子類的關(guān)系。一個接口关带,多種實現(xiàn)
多態(tài)是同一個行為具有多個不同表現(xiàn)形式或形態(tài)的能力侥涵。 同一個接口,使用不同的實例而執(zhí)行不同操作宋雏。
優(yōu)點:可擴充性(extensibility)芜飘。多態(tài)對代碼具有可擴充性。增加新的子類不影響已存在類的多態(tài)性磨总、繼承性嗦明,以及其他特性的運行和操作。
3.1 多態(tài)實現(xiàn)的三個必要條件:
- 繼承
- 方法的重寫
- 向上轉(zhuǎn)型 蚪燕。 例如:Animal an = new Dog()娶牌;
3.2 重載和重寫的區(qū)別:
方法重載:在同一個類中處理不同數(shù)據(jù)的多個相同方法名的多態(tài)手段奔浅。本質(zhì)上就是新的方法。
方法重寫:相對繼承而言裙戏,子類中對父類已經(jīng)存在的方法進行區(qū)別化的修改乘凸。
從jvm實現(xiàn)的角度來看,重寫又叫運行時多態(tài)累榜,編譯時看不出子類調(diào)用的是哪個方法营勤,但是運行時操作數(shù)棧會先根據(jù)子類的引用先去子類的類信息中查找方法,找不到的話再到父類的類信息中查找方法壹罚。而重載則是編譯時多態(tài)葛作,因為編譯期就可以確定傳入的參數(shù)組合,決定調(diào)用的具體方法是哪一個了猖凛。
四赂蠢、封裝 - 說明一個類行為和屬性與其他類的關(guān)系
封裝性就是盡可能的隱藏對象內(nèi)部細節(jié),只保留有限的接口和方法與外界進行交互 辨泳。
優(yōu)點:使對象以外的部分不能隨意的訪問和操作對象的內(nèi)部屬性虱岂,從而避免了外界對對象內(nèi)部屬性的破壞。
參考鏈接:
https://how2playlife.com/2019/09/01/1%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E5%9F%BA%E7%A1%80/