因為有著一年半的iOS開發經驗(OC也是一門面向對象的語言)所以在對Java的面向對象的理解上也是有著自己的理解,今天就和大家分享一下。
面向對象中最為重要的三大思想就是:繼承、封裝、多態。本文將以一個實例場景來分析Java中的OOP?,F有一個場景:學校人員管理。
首先分析出此場景所包含的角色類別:學生,老師,校長。那么我們可以為每個角色類別創建對應的類(具體相同特征或者行為的一種抽象)。學生(Student)、老師(Teacher)、校長(Headermaster)現在我們可以來分析一下這些類有沒有一些共同的屬性比如:姓名(name)、年齡(age)、性別(sex)等,因此我們就可以采用繼承的思想,創建一個基類,讓其他的類都繼承這個基類(Person類),把共同的屬性和方法就寫在這個基類里面,其子類自動地共享基類中成員屬性和成員方法。對應的目錄如下
在基類的基礎上,我們可以為每個類增加自己特有的屬性和方法。
我們以Person類和Student類還有Teacher類來分析封裝和多態的概念
1.Person類
2.Student類
3.Teacher類
4.測試方法
public static void main(String[] args) {
Person person = new Student("xiaoming", "male", 12);
person.roleDescribe();
// person.scoreDescribe(); // 錯誤
Person teacher = new Teacher("MSWang", "female", 43);
teacher.roleDescribe();
Student xiaodong = new Student("xiaodong", "male", 13);
xiaodong.roleDescribe();
xiaodong.setScore(95.6);
xiaodong.scoreDescribe();
}
運行結果:
i am a student
i am a teacher
i am a student
i get 95.6!!
我們來分析一下:
多態:通過基類(Person)去創建子類(Student、Teacher)的對象,并且調用一個同名的方法roleDescribe()。由于子類中都覆蓋了此方法所以此方法的效果會有多種形態,此過程便是多態。
封裝:封裝就是把數據和過程封裝起來,對數據的訪問只能通過已經定義的接口。在Java中可以通過public\private\protected 來實現封裝。比如:Person類的name,age,sex都是私有屬性,這是對屬性的封裝。對外界提供方法的封裝,可以通過提供的方法對name,age,sex進行設置和獲取。
但是看看Teacher類可以發現并沒有提供薪水的(salary)的get方法,那是因為老師不想被其它人知道他的工資。