JavaSE(二十)——面向对象的概念及三个基本特征
文章目錄
- 1. 面向對象的概念
- 2. 面向對象的三個基本特征
- 2.1 封裝
- 2.2 繼承
- 2.3 多態
1. 面向對象的概念
- 面向對象是一種符合人類思維習慣的編程思想。現實生活中存在各種形態不同的事物,這些事物之間存在著各種各樣的聯系。
- 在程序中使用對象來映射現實中的事物,使用對象的關系來描述事物之間的聯系,這種思想就是面向對象。
- 提到面向對象,自然會想到面向過程,面向過程就是分析解決問題所需要的步驟,然后用函數把這些步驟一一實現,使用的時候一個一個依次調用就可以了。
- 面向對象則是把解決的問題按照一定規則劃分為多個獨立的對象,然后通過調用對象的方法來解決問題。
- 當然,一個應用程序會包含多個對象,通過多個對象的相互配合來實現應用程序的功能,這樣當應用程序功能發生變動時,只需要修改個別的對象就可以了,從而使代碼更容易得到維護。
2. 面向對象的三個基本特征
2.1 封裝
定義: 封裝是將客觀事物封裝成抽象類, 并且類可以把自己的數據和方法只讓可信的類或者對象操作,對不可信的進行信息隱藏。
舉例:
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類應該是這樣的:
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修飾的成員變量以及成員方法,無法在類外調用,起到了隱藏的作用。
2.2 繼承
定義: 繼承是從己有的類中派生出的新的類,新的類能夠吸收己有類的數據屬性和行為,并能擴展新
的屬性和行為。關鍵字(extends)讓類與類之間產生繼承關系。
舉例:
//Dog是子類,Animal是父類 class Dog extends Animal{ }注意: Java中類不支持多繼承,單繼承可以使繼承關系變得簡單,一個類只能有一個父類,一
個類可以繼承多個接口 接口支持多繼承。
2.3 多態
定義: 多態指不同類對象對同一消息做出的響應。
重寫和重載:
(1)方法的重寫Overriding和重載Overloading都是實現多態的方式,區別在于前者實現的是編譯時的多態性,而后者實現的是運行時的多態性。
(2)重寫發生在子類與父類之間,重寫要求子類被重寫方法與父類被重寫方法有相同的返回類型,比父類被重寫方法更好訪問,不能比父類被重寫方法聲明更多的異常(里氏代換原則)。
(3)重載發生在同一個類中,同名的方法如果有不同的參數列表(參數類型不同、參數個數不同或者二者都不同)則視為重載;重載對返回類型沒有特殊的要求,對訪問權限也沒有要求。
多態的三個必要條件
(1)繼承
在多態中必須存在有繼承關系的子類和父類。基于繼承的實現機制主要表現在父類和繼承該父類的一個或多個子類對某些方法的重寫,多個子類對同一方法的重寫可以表現出不同的行為。
(2)重寫
子類對父類中某些方法進行重新定義,在調用這些方法時就會調用子類的方法。
(3)向上轉型
在多態中需要將子類的引用賦給父類對象,只有這樣該引用才能夠具備技能調用父類的方法和子類的方法。
總結
以上是生活随笔為你收集整理的JavaSE(二十)——面向对象的概念及三个基本特征的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaSE(十九)——equals()
- 下一篇: JavaSE(二十一)——栈和队列、栈和