2017-08-02 104 views
-1

這是一個單詞中要調用的內容嗎?創建繼承類的對象

public class person 
{ 
} 
public class person1 : person 
{ 
} 
public class person2 : person 
{ 
} 

我已經在其他地方見過這種代碼,創建另一個繼承類的新對象,但什麼這一個字

person p=new person2(); 
person p1=new person1(); 
+11

這將不會編譯。所以用一個單詞,我想我會稱之爲「錯誤」。 – itsme86

+0

不,它不會拋出錯誤,因爲我創建了一個繼承類的對象,並且這些類的基類相同 – Nischal

+3

如果您執行了'Person p1 = new Person2();'那麼它會編譯。但是你不能像'你'那樣'Person1 p1 = new Person2();'所以,如果你沒有得到一個錯誤,那麼你不顯示你的實際代碼。 – itsme86

回答

8

我覺得你的字被稱爲尋找是多態性。但你的例子是錯誤的:

這將是多態,如果你這樣說:

person myPerson = new person1();person myPerson = new person2();

你可以沒有,但是,有兩個班,因爲你在做同一個基類的例。

person2 myPerson = new person1();

雖然這是真的,他們都繼承相同的基類,它們是不一樣的。用真實的詞彙來表達:

假設你有一個類Vehicle。然後你有兩個其他類,CarBus。你能說BusVehicle?當然是。但你不能BusCar

+1

'Bus'是'Car' ...我說過:-O – GibralterTop

+1

雖然這並不是多態的例子。 – Servy

+0

它是真正的繼承點,因爲它們不覆蓋基類?我明白這一點,但我的觀點是,既然他在談論'person1'和'person2',我懷疑*他指的是'person'的不同實現。很難說,因爲無法以原始形式進行編譯。 – Ares