2011-08-10 64 views
1

我不是在找你給我這個答案,我只是要求解釋給我一個理解我如何找到答案。需要繼承關係解釋

假設我們有四個班的一個項目A,B,C和D.我們有以下變量:

A中的; B b; C c; D d;

以下作業全部合法(全部編譯):

a = b; a = c; d = b;

下列賦值非法的(它們會導致編譯器錯誤):

C = d; d = c; d = a;

繪製這些類之間的繼承關係。

幫助表示讚賞,感謝:)

+0

這功課呢? – Kal

+0

不,這是一個模擬考試的問題。我真的不知道從哪裏開始。分層是一回事,但繼承關係讓我大開眼界。 – user888175

+0

如果是「考試」,它與作業有什麼不同嗎? –

回答

4

的法律分配意味着該類左側的變量是類的右側一個超類。

a = b意思是b在a的子類層次結構中的某處,或者換句話說,a是b的祖先。

如果不編譯,則表示這不是有效的賦值。

從您的「合法」賦值中,可以推斷出b是a的子類,c是a的子類,b是d的子類。

希望,這應該足以讓你繼續下去。

+0

嗨,感謝您的信息。我已經將它們歸類爲法律和非法,這個問題是否完成?還是有下一步?感謝您一直以來的幫助。 – user888175

+0

@ user888175,是的。要從字面上「繪製」這些類之間的繼承關係,您需要了解UML。 – mre

+0

那麼,考慮到考場中我們沒有電腦的情況。那麼如何才能完成這個問題呢? – user888175

1

以下是可能用於開發圖表的方法。在四個類的集合之間繪製每條可能的繼承線。如果分配是合法的,那麼對應於該關係的繼承行可以被標記爲有效。如果分配是非法的,那麼可以刪除與該關係相對應的繼承行。一旦完成,其餘行應包含最終的繼承映射。

1

如果一個類X從等級Y繼承,也可以一個對象x分配給Y型的變量,像這樣:

y = x; 

如果2類不繼承這是不可能的,並你會得到一個編譯錯誤。

旁註:這意味着你只能訪問Y的方法,即使它仍然是仍然類X.

0

這裏的目標有一個提示:世界上只有一個符合有效的層次給定的約束。

繪製一個有向無環圖。如果分配有效,請從分配的值的類型(右側)繪製箭頭,以指定分配的變量的類型(左側)。如果分配無效,那麼在該方向上沒有箭頭這將產生看起來像UML的東西,其中派生類的箭頭指向其超類。