輸出下面程式結果:
inte***ce
a{}class
bimplements a}
class
demo
}
執行結果:the method func() is undefined for the type a
分析:a a = new b();實現了多型,此時父類的引用指向子類的物件,
相當於:
動物 a=new 狗();//這就為向上轉型 a.發聲(); // 物件a可以使用動物中的發聲()或其他方法,但不可以呼叫狗的方法。 a a當呼叫a.func()時,不能呼叫b中的方法,由於a中沒有此方法,所以找不到(the method func() is undefined for the type a)= new a();例項化乙個父類的物件a 動物 a=new 狗();狗b=(狗)a;//這裡是向下轉型 這時b可呼叫動物類未被重寫的方法和狗類所有方法(包括重寫動物類的方法)
解決辦法:
在介面中新增func();宣告
inte***ce a
或者把b向下轉型
a a = new b();
b b = (b) a;//向下轉型
system.out.println(b.func());
類似的有
public
class
demo10_3
public
static
void main(string args)
}inte***ce
aaclass
bbimplements
aa}
介面練習題
編寫 模擬上述場景 1 設計抽象類student 屬性包括姓名 name 學費 fee 方法包括 構造方法student string name 抽象方法void setfee int fee 抽象方法int getfee 2 定義乙個介面salary 包含乙個方法int getsalary 3 定...
物件導向練習題 介面,異常,多型,equals,
題目 建立乙個圖形介面,宣告乙個面積函式,圓形和矩形都實現這個介面,並得出兩個圖形的面積 注 體現物件導向的特徵,對數值進行判斷,用異常處理,不合法的數值要出現 這個數值是非法的提示 不再進行運算。package com.rqy.day13 建立乙個圖形介面,宣告乙個面積函式,圓形和矩形都實現這個介...
多型練習題理解1
1.若子類重寫了父類的方法,就意味著子類中重寫的方法完全覆蓋了父類中的方 法,系統將不可能把父類中的方法轉移到子類中,編譯看左邊,執行看右邊 2.對於例項變數則不存在這樣的現象,即使子類裡定義了與父類中完全相同的實 例變數,這個例項變數依然不可能覆蓋父類中的例項變數,編譯執行都看左邊。public ...