2016-09-14 71 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。