2016-09-14 66 views
-2

我審查了Java認證專業考試的一些樣題,並希望得到的答案一定的清晰度的問題之一:Java的有,一個「關係說明

2. Given: 

class Class1 { 
String v1; 
} 
class Class2 { 
Class1 c1; 
String v2; 
} 
public class Class3 { 
Class2 c1; 
String i3; 
} 

Which three options correctly describe the relationship between the classes? 
A) Class2 has-a i3 
B) Class1 has-a v2 
C) Class2 has-a v2 
D) Class3 has-a v1 
E) Class2 has-a Class3 
F) Class2 has-a Class1 

提供的答案是C,d和F

我知道爲什麼C和F是正確的,但我不是很確定D.

我的理解「有,一個」關係,因爲它涉及到的對象如果'A有一個Z',這意味着A類有一個成員變量(或attribut)因爲它被稱爲Z),或者,通過繼承也是如此,這意味着如果A類擴展了B類,而B類具有Z,那麼說A類具有一個Z(通過繼承)。

從我看到的情況來看,Class3具有c1並且具有i3,並且因爲Class3沒有擴展任何類,所以'has-a'關係結束。

我看到Class3有一個Class2,Class2有一個Class1,而Class1有一個v1,但我沒有意識到這意味着Class3有一個v1,在我看來,Class1有一個v1。

這是直接從Oracle網站:

http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=303&p_certName=SQ1Z0_804

回答

1

Class3中有一個名爲C1的Class2其中有一個名爲C1的Class1其中有一個名爲V1字符串

所以Class3中有V1:Class3.c1.c1.v1

1

我猜有時候讀你自己的問題有所幫助。它從一個汽車的例子開始。汽車有發動機,發動機有活塞,因此汽車有活塞。在面向對象的世界看起來很奇怪,我的理解已經消失。我想我現在明白了。

+0

我覺得沒用XD – Adalcar

0

A has-a關係用於對象遏制。遏制手段,一個對象包含另一個對象。它也可以被稱爲組成

例如:汽車有音樂系統,音樂系統有揚聲器。因此,這輛車有一個揚聲器。

發生'has-a'關係如果某個類具有實體引用。即,聚合。

選項D是正確的,因爲,Class3包含Class2的實體引用,Class2包含Class1的實體引用。

因此,Class3的對象具有Class2的屬性,因爲Class2對象具有Class1的屬性,Class3與Class1具有稱爲「聚合/ has-a」的關係。

Class1有一個v1,表示Class3的對象包含屬性值v1。