什麼是多型,多型的概念,多型的體現,多型的應用
public class Test {
public static void main(String[] args) {
Person person = new Student();
// new Student() 是實現類了一個學生身份的張三, Person person是一個人身份,
// 將學生身份的張三提升至人身份 ,這就是多型的應用,
}
}
1.1 多型概述
多型是繼封裝、繼承之後,面向物件的第三大特性。
現實事物經常會體現出多種形態,如學生,學生是人的一種,則一個具體的同學張三既是學生也是人,即出現兩種形態。
Java作為面向物件的語言,同樣可以描述一個事物的多種形態。如Student類繼承了Person類,一個Student的物件便既是Student,又是Person。
Java中多型的程式碼體現在一個子類物件(實現類物件)既可以給這個子類(實現類物件)引用變數賦值,又可以給這個子類(實現類物件)的父類(介面)變數賦值。
如Student類可以為Person類的子類。那麼一個Student物件既可以賦值給一個Student型別的引用,也可以賦值給一個Person型別的引用。
最終多型體現為父類引用變數可以指向子類物件。
多型的前提是必須有子父類關係或者類實現介面關係,否則無法完成多型。
在使用多型後的父類引用變數呼叫方法時,會呼叫子類重寫後的方法
1.2 多型的定義與使用格式
多型的定義格式:就是父類的引用變數指向子類物件
父類型別變數名 = new 子類型別();
變數名.方法名();
1. 普通類多型定義的格式
父類變數名 = new 子類();
如: class Fu {}
class Ziextends Fu {}
//類的多型使用
Fu f = new Zi();
2.抽象類多型定義的格式
抽象類變數名 = new 抽象類子類();
如: abstractclass Fu {
public abstract void method();
}
class Zi extends Fu {
public void method(){
System.out.println(“重寫父類抽象方法”);
}
}
//類的多型使用
Fu fu= new Zi();