面向對象的三大特征

封裝、繼承、多態

一、封裝

? ? ? ?簡單的說,屬性能夠描述事物的特征,方法能夠描述事物的動作。封裝就是把同一類事物的共性(包括屬性和方法)歸到同一類中,方便使用。

? ? ? ?封裝是指利用抽象數據類型把數據和基于數據的操作封裝起來,使其成為一個不可分割的整體,數據隱藏在抽象數據內部,盡可能的隱藏數據細節,只保留一些接口使其與外界發生聯系。也就是說用戶無需知道內部的數據和方法的具體實現細節,只需根據留在外部的接口進行操作就行。

如下:

public class Person{

/*

*對屬性的封裝一個人的姓名、性別、年齡都是這個人的私有屬性

*/

private String name;

private String sex;

private int age;

private Wife wife;

/*

* setter()、getter()是該對象對外開發的接口

*/

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

}

二、? ? ? 繼承

? ? ? ?簡單來說繼承就是從已有的類中派生出新的類,新的類能吸收已有類的數據屬性和行為,并能擴展新的能力。

? ? ? 繼承關系是傳遞的。若類C繼承類B,類B繼承類A(多繼承),那么C同時繼承下來A和B的屬性和方法

class Person{

public String name = "小明";

public int age = 20;

}

class Teacher extends Person {

void study() {

System.out.println("教書");

}

}

public class Show {

public static void main(String args[]) {

Teacher t= new Teacher();

t.name = "小紅";

// t.age = 20;

System.out.println("name=" + t.name + "+++++++" + "age=" + t.age);

}

}

三、? ? ? 多態

? ? 必要條件:方法的重寫、重載與動態連接構成多態性;

? ? 向上轉型

?我定義了一個子類Cat,它繼承了Animal類,那么后者就是前者的父類。我可以通過

Cat c = new Cat();? ???? 例化一個Cat的對象,這個不難理解。

但當我這樣定義時: Animal a = new Cat();

? ? ? ?它表示我定義了一個Animal類型的引用,指向新建的Cat類型的對象。由于Cat是繼承自它的父類Animal,所以Animal類型的引用是可以指向Cat類型的對象的。那么這樣做有什么意義呢?因為子類是對父類的一個改進和擴充,所以一般子類在功能上較父類更強大,屬性較父類更獨特,定義一個父類類型的引用指向一個子類的對象既可以使用子類強大的功能,又可以抽取父類的共性。所以,父類引用只能調用父類中存在的方法和屬性,不能調用子類的擴展部分;因為父類引用指向的是堆中子類對象繼承的父類;同時,父類中的一個方法只有在父類中定義而在子類中沒有重寫的情況下,才可以被父類類型的引用調用;對于父類中定義的方法,如果子類中重寫了該方法,那么父類類型的引用將會調用子類中的這個方法,這就是動態連接。

? ? ?指向子類的父類引用由于向上轉型了,它只能訪問父類中擁有的方法和屬性,而對于子類中存在而父類中不存在的方法,該引用是不能使用的,盡管是重載該方法。若子類重寫了父類中的某些方法,在調用該些方法的時候,必定是使用子類中定義的這些方法(動態連接、動態調用)。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 概念繼承:子類引用超類,并且以關鍵字extends來表示 構造器:對象在加載的一瞬間(new)執行的那個程序塊,那...
    測試的旅途中閱讀 353評論 0 0
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,779評論 18 399
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,993評論 19 139
  • 時間得回到上一個月來說,懶惰如我,竟然努力的考研成功,接著談了場迄今為止最高時長的戀愛。 這倆件事并排發聲,也也許...
    不足君閱讀 272評論 0 0
  • 多么想要的告訴自己的努力,總是不自覺間傷了心。記得看過一句話:北方人愛喝酒,喝酒之后是無盡的牛逼滿天飛,南方人愛喝...
    子陌爺爺的小屋閱讀 303評論 0 1