因?yàn)橛兄荒臧氲膇OS開發(fā)經(jīng)驗(yàn)(OC也是一門面向?qū)ο蟮恼Z言)所以在對(duì)Java的面向?qū)ο蟮睦斫馍弦彩怯兄约旱睦斫猓裉炀秃痛蠹曳窒硪幌隆?/p>
面向?qū)ο笾凶顬橹匾娜笏枷刖褪牵豪^承盈滴、封裝逃魄、多態(tài)川无。本文將以一個(gè)實(shí)例場(chǎng)景來分析Java中的OOP【苎祝現(xiàn)有一個(gè)場(chǎng)景:學(xué)校人員管理孤钦。
首先分析出此場(chǎng)景所包含的角色類別:學(xué)生悦昵,老師肴茄,校長(zhǎng)。那么我們可以為每個(gè)角色類別創(chuàng)建對(duì)應(yīng)的類(具體相同特征或者行為的一種抽象)但指。學(xué)生(Student)寡痰、老師(Teacher)、校長(zhǎng)(Headermaster)現(xiàn)在我們可以來分析一下這些類有沒有一些共同的屬性比如:姓名(name)棋凳、年齡(age)拦坠、性別(sex)等,因此我們就可以采用繼承的思想剩岳,創(chuàng)建一個(gè)基類贞滨,讓其他的類都繼承這個(gè)基類(Person類),把共同的屬性和方法就寫在這個(gè)基類里面拍棕,其子類自動(dòng)地共享基類中成員屬性和成員方法晓铆。對(duì)應(yīng)的目錄如下
在基類的基礎(chǔ)上,我們可以為每個(gè)類增加自己特有的屬性和方法绰播。
我們以Person類和Student類還有Teacher類來分析封裝和多態(tài)的概念
1.Person類
2.Student類
3.Teacher類
4.測(cè)試方法
public static void main(String[] args) {
Person person = new Student("xiaoming", "male", 12);
person.roleDescribe();
// person.scoreDescribe(); // 錯(cuò)誤
Person teacher = new Teacher("MSWang", "female", 43);
teacher.roleDescribe();
Student xiaodong = new Student("xiaodong", "male", 13);
xiaodong.roleDescribe();
xiaodong.setScore(95.6);
xiaodong.scoreDescribe();
}
運(yùn)行結(jié)果:
i am a student
i am a teacher
i am a student
i get 95.6!!
我們來分析一下:
多態(tài):通過基類(Person)去創(chuàng)建子類(Student、Teacher)的對(duì)象幅垮,并且調(diào)用一個(gè)同名的方法roleDescribe()腰池。由于子類中都覆蓋了此方法所以此方法的效果會(huì)有多種形態(tài),此過程便是多態(tài)忙芒。
封裝:封裝就是把數(shù)據(jù)和過程封裝起來示弓,對(duì)數(shù)據(jù)的訪問只能通過已經(jīng)定義的接口。在Java中可以通過public\private\protected 來實(shí)現(xiàn)封裝呵萨。比如:Person類的name,age,sex都是私有屬性奏属,這是對(duì)屬性的封裝。對(duì)外界提供方法的封裝潮峦,可以通過提供的方法對(duì)name囱皿,age勇婴,sex進(jìn)行設(shè)置和獲取。
但是看看Teacher類可以發(fā)現(xiàn)并沒有提供薪水的(salary)的get方法嘱腥,那是因?yàn)槔蠋煵幌氡黄渌酥浪墓べY耕渴。