面向物件的三大特徵:封裝、繼承和多型的簡單概述
阿新 • • 發佈:2021-01-06
一、封裝
封裝其實我們可以按照字面意思理解一下,就是將一些東西包裝起來成為一個整體。比如:電視機,我們只需要連線製造廠商給我們留的介面,用遙控器來操作它就可以了,沒必要去看電視機的內部結構是什麼樣子,這就是封裝。
- 該露的露,該藏的藏
1.我們的程式設計要追求“高內聚,低耦合”。高內聚:就是類的內部資料操作細節自己完成,不允許外部干涉;低耦合:僅暴露少量的方法給外部使用。 - 封裝(資料的隱藏)
1.通常,應禁止直接訪問一個物件中資料的實際表示,而應通過操作介面來訪問,這稱為資訊隱藏。 - 對於程式碼方面
1.我們在定義一個物件的時候:屬性私有用Get/Set就行了
這裡說一個idea快捷鍵生成Get/Set:Alt+Insert
public class Student {
private String name;//姓名
private int id;//學號
private char sex;//性別
private int age;//年齡
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if (age > 120 || age < 0){
this.age = 3;
}else{
this.age = age;
}
}
}
public class TestStudent {
public static void main(String[] args) {
Student nanyuan = new Student();
nanyuan.setName("南鳶");
System.out.println(nanyuan.getName());
nanyuan.setAge(99);
System.out.println(nanyuan.getAge());
}
}
二、繼承
-
繼承的本質是對某一批類的抽象,從而實現對現實世界更好的建模。
-
extends 的意思是“擴充套件”。子類是父類的擴充套件。
-
JAVA中類只有單繼承,沒有多繼承!(比如一個兒子只有一個親身父親,但是一個父親可以有多個兒子)
-
繼承是類和類之間的一種關係。除此之外,類和類之間的關係還有以來、組合、聚合等。
-
繼承關係的倆個類,一個為子類(派生類),一個為父類(基類)。子類繼承父類,使用關鍵字extends來表示。
-
子類和父類之間,從意義上講應該具有“is a”的關係。
-
Object:在java中,所有的類,都預設直接或者間接繼承Object
-
super – this
super注意點:- super呼叫父類的構造方法,必須在構造方法的第一個。
- super 必須只能出現在子類的方法或者構造方法中!
- super 和 this 不能同時呼叫構造方法!
super VS this
代表的物件不同:
this:本身呼叫者這個物件。
super:代表父類物件的應用。
前提:
this:沒有繼承也可以使用。
super:只能在繼承條件才可以使用。
構造方法:
***this()***:預設呼叫本類的構造。
***super()***:呼叫父類的構造。 -
重寫:需要有繼承關係,子類重寫父類的方法!
- 方法名必須相同。
- 引數列表必須相同。
- 修飾符:範圍可以擴大大不能縮小:public > protected > default > private
- 丟擲異常:範圍,可以被縮小,但不能擴大:ClassNotFoundException–> Exception(大)
重寫,子類的方法和父類必須要一致:方法體不同!
三、多型
- 即同一方法可以根據傳送物件的不同而採用多種不同的行為方式。
- 一個物件的實際型別是確定的,但可以指向物件的引用的型別有很多。
- 多型存在的條件
- 有繼承關係
- 子類重寫父類的方法
- 父類引用指向子類的物件。
- 注意:多型是方法的多型,屬性沒有多型性。
- 多型是方法的多型,屬性沒有多型。
- 父類和子類,有聯絡,型別轉換異常!ClassCastException!
- 存在條件:繼承關係,方法需要重寫,父類引用指向子類物件!Father f1 = new Son();
(1).static 方法,屬於類,他不屬於例項。
(2).final 常量
(3).private 方法
- instanceof (型別轉換),引用型別,判斷一個物件是什麼型別。