person父類
public
class person
public
person(string name, int age)
public string getname()
public
void
setname(string name)
public
intgetage()
public
void
setage(int age)
else
}public
void
show()
public
static
void
test()
}
student子類繼承person父類
public
class
student
extends
person
public
student(string name, int age,int id)
public
intgetid()
public
void
setid(int id) else
}@override
public
void
show()
public
static
void
test()
}
測試類
public
class testpersonstudent else
}}
教師類
package xdl.day09;
public
class
teacher
extends
person
public teacher(int ***)
public int get***()
public void set***(int ***)
public void show()
*/
}
多型:
多型就是指同一種事物表現出來的多種形態。
如: 飲料:可樂、雪碧、樂虎、脈動……
圖形:矩形、圓、三角形……
整數:byte b= 10; short s = 10; int i = 10;…
多型的語法格式:
父類型別 引用 = new 子類型別();
如:
person p = new student();
p.show();
解析:
在編譯階段p是person型別,因此呼叫person類自己的show()方法,若沒有則編譯報錯;
在執行階段p真正指向的物件是student型別,因此最終呼叫student類中自己的show()方法。
多型的效果
(1)對於指向子類物件的父類引用來說,在編譯階段只能直接呼叫父類的方法,不能直接呼叫子類。
(2)對於父子類都有的非靜態方法來說,最終呼叫子類的重寫版本;
(3)對於父子類都有的靜態方法來說,最終呼叫父類中的版本,與指向的物件型別無關;
引用型別之間的轉換
(1)引用型別之間的轉換必須發生在父子類之間,分為自動型別轉換 和 強制型別轉換;
(2)其中子類型別向父類型別的轉換需要發生自動型別轉換即可;
其中父類型別向子類型別的轉換需要發生強制型別轉換才可以;
(3)若沒有父子類關係發生強轉是則編譯報錯,當擁有父子類關係發展強轉是則編譯通過。
若目標型別不是該引用真正指向的型別時,在執行階段發生型別轉換異常;
(4)為了避免上述錯誤的發生,通常只有進行強制型別轉換就需要進行判斷,格式如下:
if(引用變數名 instanceof 資料型別)else
//-判斷引用指向的物件是否為指定的資料型別,如是則返回true,否則返回false;
多型的意義
可以遮蔽不同子類的差異性編寫通用的**,從而產生不同的效果。
物件導向 封裝 繼承 多型
物件導向 封裝 繼承 多型物件導向 封裝 一 封裝 private 資料型別 名字 成員變數 public 預設一致 名字 屬性 set 類中不僅可以有成員變數和屬性,還可以有成員方法 訪問修飾符 4個 public 公共的,任何地方都可以訪問,但是需要引用 命名空間 private 私有的,類的內...
物件導向的封裝 繼承 多型
一 封裝 封裝是實現物件導向程式設計的第一步,封裝就是將資料或函式等集合在乙個個的單元中 我們稱之為類 被封裝的物件通常被稱為抽象資料型別。封裝的意義 封裝的意義在於保護或者防止 資料 被我們無意中破壞。在物件導向程式設計中資料被看作是乙個中心的元素並且和使用它的函式結合的很密切,從而保護它不被其它...
java物件導向中的封裝 繼承和多型
1.封裝 1.1什麼是封裝?首先先將物件抽象成乙個類,然後將這個物件擁有的屬性和方法隱藏起來 private修飾符修飾 然後只保留特定的方法與外界進行互動。1.2為什麼需要封裝?以為封裝要符合物件導向設計原則的第一條 單一性原則,乙個類把自己該做的事情封裝起來,而不是暴露給其他類去處理,當內部的邏輯...