JavaSE(二十)——面向对象的概念及三个基本特征
文章目錄
- 1. 面向?qū)ο蟮母拍?/li>
- 2. 面向?qū)ο蟮娜齻€基本特征
- 2.1 封裝
- 2.2 繼承
- 2.3 多態(tài)
1. 面向?qū)ο蟮母拍?/h1>
- 面向?qū)ο笫且环N符合人類思維習(xí)慣的編程思想。現(xiàn)實生活中存在各種形態(tài)不同的事物,這些事物之間存在著各種各樣的聯(lián)系。
- 在程序中使用對象來映射現(xiàn)實中的事物,使用對象的關(guān)系來描述事物之間的聯(lián)系,這種思想就是面向?qū)ο蟆?/li>
- 提到面向?qū)ο?#xff0c;自然會想到面向過程,面向過程就是分析解決問題所需要的步驟,然后用函數(shù)把這些步驟一一實現(xiàn),使用的時候一個一個依次調(diào)用就可以了。
- 面向?qū)ο髣t是把解決的問題按照一定規(guī)則劃分為多個獨立的對象,然后通過調(diào)用對象的方法來解決問題。
- 當(dāng)然,一個應(yīng)用程序會包含多個對象,通過多個對象的相互配合來實現(xiàn)應(yīng)用程序的功能,這樣當(dāng)應(yīng)用程序功能發(fā)生變動時,只需要修改個別的對象就可以了,從而使代碼更容易得到維護(hù)。
2. 面向?qū)ο蟮娜齻€基本特征
2.1 封裝
定義: 封裝是將客觀事物封裝成抽象類, 并且類可以把自己的數(shù)據(jù)和方法只讓可信的類或者對象操作,對不可信的進(jìn)行信息隱藏。
舉例:
public class Person{private String name;private int age;private String sex;public String getName(){return name;}public void setName(String name){this.name = name;}private int getAge(){return age;}private void setAge(int age){this.age = age;}public void setSex(String sex){this.sex = sex;} }如果沒有set()和get()方法,那么Person類應(yīng)該是這樣的:
public class Person { public String name ; public int age ; private String sex;}需要這樣使用它:
Person person = new Person(); person.age = 18; person.name = "小胖"; person.sex = "男";封裝好處:
(1)如果需要修改Person,比如將sex修改為int類型,幾十或者上百個這樣的地方需要修改,工作量極大,如果封裝了,只需要修改setAge()方法就好了。
(2)針對某些成員變量,不想讓其他類知道其值的大小,就可以不去做get()操作,比如Person類中的sex,不想讓其他人知道性別,就不做getSex()。
(3)private修飾的成員變量以及成員方法,無法在類外調(diào)用,起到了隱藏的作用。
2.2 繼承
定義: 繼承是從己有的類中派生出的新的類,新的類能夠吸收己有類的數(shù)據(jù)屬性和行為,并能擴(kuò)展新
的屬性和行為。關(guān)鍵字(extends)讓類與類之間產(chǎn)生繼承關(guān)系。
舉例:
//Dog是子類,Animal是父類 class Dog extends Animal{ }注意: Java中類不支持多繼承,單繼承可以使繼承關(guān)系變得簡單,一個類只能有一個父類,一
個類可以繼承多個接口 接口支持多繼承。
2.3 多態(tài)
定義: 多態(tài)指不同類對象對同一消息做出的響應(yīng)。
重寫和重載:
(1)方法的重寫Overriding和重載Overloading都是實現(xiàn)多態(tài)的方式,區(qū)別在于前者實現(xiàn)的是編譯時的多態(tài)性,而后者實現(xiàn)的是運行時的多態(tài)性。
(2)重寫發(fā)生在子類與父類之間,重寫要求子類被重寫方法與父類被重寫方法有相同的返回類型,比父類被重寫方法更好訪問,不能比父類被重寫方法聲明更多的異常(里氏代換原則)。
(3)重載發(fā)生在同一個類中,同名的方法如果有不同的參數(shù)列表(參數(shù)類型不同、參數(shù)個數(shù)不同或者二者都不同)則視為重載;重載對返回類型沒有特殊的要求,對訪問權(quán)限也沒有要求。
多態(tài)的三個必要條件
(1)繼承
在多態(tài)中必須存在有繼承關(guān)系的子類和父類。基于繼承的實現(xiàn)機(jī)制主要表現(xiàn)在父類和繼承該父類的一個或多個子類對某些方法的重寫,多個子類對同一方法的重寫可以表現(xiàn)出不同的行為。
(2)重寫
子類對父類中某些方法進(jìn)行重新定義,在調(diào)用這些方法時就會調(diào)用子類的方法。
(3)向上轉(zhuǎn)型
在多態(tài)中需要將子類的引用賦給父類對象,只有這樣該引用才能夠具備技能調(diào)用父類的方法和子類的方法。
總結(jié)
以上是生活随笔為你收集整理的JavaSE(二十)——面向对象的概念及三个基本特征的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaSE(十九)——equals()
- 下一篇: JavaSE(二十一)——栈和队列、栈和