多型之向上轉型和向下轉型
阿新 • • 發佈:2018-12-23
向上轉型:
將子類物件轉換為父類物件 : Father f = new Son(); 這樣產生的物件f,將會擁有父類的屬性和子類的方法。當然,子類的方法複寫了父類的方法,輸出的結果自然是父類的。而f的屬性卻依舊是父類時候的屬性值。舉個栗子:
結果: 父類class Base{ public String bname = "父類"; public String sname; public void method() { System.out.println("父類方法"); } public void test() { } } class Sub extends Base{ public String sname = "子類"; public void method() { System.out.println("重寫方法"); } public void test() { System.out.println("子類方法"); } } public class 向上繼承 { public static void main(String[] args) { Base b = new Sub(); System.out.println(b.bname); System.out.println(b.sname); b.method(); b.test(); }
null
重寫方法
子類方法
將Base b = new Sub()更改為Sub b = new Sub()
結果: 父類
子類
重寫方法
子類方法
子類物件將子類中重寫父類的內容全部更改,未改的繼承父類。
但是,向上轉型的代價是:犧牲了那些子類有而父類沒有的方法。
向上轉型的優點:減少重複程式碼編寫工作量。
舉個栗子: 填寫一個英語四六級表格:同一個學校同一個班級的學生,除了(姓名、學號、身份證號)不同外,(學校名、專業、報考地點等等等)很多資訊一樣,那向上轉型就是將一樣的資訊列印好,就不需要一個個填寫了。
向下轉型:
完全為了轉型而轉型。。。