老白帶你學java基礎-OOP思想

OOP 全稱Object Oriented Programming, 面向對象的程序設計

OOP包括三大特徵:封裝,繼承,多態。筆者最初接觸的時候,這幾個名詞既抽象又晦澀,但是經過多年編碼工作後,發現我們的編碼設計結構完全是圍繞在這幾點,以下文章將幫助讀者怎麼去形象理解以及今後工作中怎麼用。

先介紹一下概念:

1,封裝:

指利用抽象數據類型將數據和基於數據的操作封裝在一起,使其構成一個不可分割的獨立實體,數據被保護在抽象數據類型的內部。

舉個例子:人的屬性包括姓名,年齡,性別,那麼,我們將 姓名,年齡,性別等信息封裝在一起,組合成一個對象對外提供服務,不允許外部直接訪問對象內部信息。

public class Person{

String name;

int age;

int sex;

String getName (){

return this.name;

}

int getSex (){

return this.sex;

}

int getAge (){

return this.age;

}

}

2 繼承:

顧名思義,就像兒子繼承父親的特徵一樣,繼承定義了父類與子類之間如何相互關聯,共享特性。

其中,繼承關係

1、子類繼承父類非private的屬性和方法。

2、子類可以設置自己屬性/方法,即子類可以對父類進行擴展。

3、子類可以用自己的實現覆蓋父類的方法

public class Person{

protected String name;

protected int age;

protected int sex;

}

public class Student extends Person{

String studyNo;//學號

void study(){

System.out.println("I am studing");

}

}

public class Teacher extends Person{

String teachNo;//教職編號

void teach(){

System.out.println("I am teaching");

}

}

為什麼要使用繼承,示例展示,學生(student)不僅有name和age,還有自己的學號(studyNo),教師也有自己的(teachNo),這樣編寫code,不需要學生/老師 把這些公用的姓名,年齡屬性都定義一遍,解決了代碼的重用問題。

同時,子類起到了對父類的擴展,如上代碼所示,學生有study()行為,老師有teach()行為,這2 個不同屬性的行為,相互之間沒有關聯。只隸屬於各自的主體

多態:

這個名字夠變態,可以理解為多種運行狀態,即一個引用變量發出的方法調用到底是哪個類中實現的方法,必須在由程序運行期間才能決定。

為什麼要設計多態,在不用修改源代碼前提下,在程序運行時在程序運行時就可以讓引用變量綁定到各種不同的類實現上,從而導致該引用調用的具體方法隨之改變。越是變態的地方,越體現了oop的精髓,

首先,什麼是多態?簡單的舉個例子,如下:

public class Person{

void level(){

}

}

public class Teacher extends Person{

void level(){

System.out.println("我是教授");

}

}

public class Student extends Person{

void level(){

System.out.println("我是三好學生");

}

}

public class Test{

Person s=new Student ();

Person t=new Teacher();

s.level();

t.level();

}

引用變量s和t 都指向同一引用類型(Person類),調用相同的level() 方法卻有不同的輸出,這就是多態的體現。在實際工作中以及開源代碼框架中,多態的思想時時刻刻體現其中,再舉個場景,用戶支付場景-調用支付網關invokeChannel() 接口,既可能調用支付寶網關,也可能調用微信網關,怎麼辦,採取多態的思想,讓程序在運行時,去選取對應的實現類,以提升代碼可讀性和簡潔度,提高質量代碼。


分享到:


相關文章: