首页 > 试题广场 >

Gadget has-a Sprocket and Gadg

[不定项选择题]
Gadget has-a Sprocket and Gadget has-a Spring and Gadget is-a Widget and Widget has-a
Sprocket 以下哪两段代码可以表示这个关系? (选择两项) (    )
  • class Widget { Sprocket s; }
    class Gadget extends Widget { Spring s; }
  • class Widget { }
    class Gadget extends Widget { Spring s1; Sprocket s2; }
  • class Widget { Sprocket s1; Spring s2; }
    class Gadget extends Widget { }
  • class Gadget { Spring s; }
    class Widget extends Gadget{ Sprocket s; }
完全是吃了没文化的亏

发表于 2019-09-11 19:43:04 回复(8)
更多回答
is-a   表示继承:Gadget is-a Widget就表示Gadget 继承 Widget;
has-a表示从属:Gadget has-a Sprocket就表示Gadget中有Sprocket的引用,Sprocket是Gadget的组成部分
like-a表示组合:如果A like-a B,那么B就是A的接口
发表于 2019-09-24 20:47:08 回复(13)
从题目中可以得出以下几个结论:
  1. Gadget中有对Sprocket的引用。
  2. Gadget中有对Spring的引用。
  3. Gadget继承了Widget。
  4. Widget中有对Sprocket的引用。
  • A
    class Widget { Sprocket s; }
    class Gadget extends Widget { Spring s; }
    完全符合要求,这里的结论1虽然没有明确表明,但是因为结论3(Gadget继承了Widget)的存在,即父类中的非私有成员(Sprocket)子类都默认拥有。故结论都成立。
  • B
    class Widget { }
    class Gadget extends Widget { Spring s1; Sprocket s2; }
    结论123成立,但是没有表明结论4。
  • C
    class Widget { Sprocket s1; Spring s2; }
    class Gadget extends Widget { }
    完全符合要求,这里的结论12虽然没有明确表明,但是因为结论3(Gadget继承了Widget)的存在,即父类中的非私有成员(Sprocket和Spring)子类都默认拥有。故结论都成立。
  • D
    class Gadget { Spring s; }
    class Widget extends Gadget{ Sprocket s; }
    结论24成立,但是结论13没有表明。这里只是表明了Widget继承了Gadget,并且Widget具有对Spring的引用。
发表于 2020-06-07 10:51:49 回复(6)
这道题主要考查我们的Java类与类之间的关系。
类与类之间有三种关系:
(1)is-a 包括了继承(类)和实现(接口)关系;
(2)has-a包括了关联、聚合、组合关系;
(3)use-a包括了依赖关系;
注:依赖关系 > 关联关系 > 聚合关系 > 组合关系
举个例子:
(1)继承关系:class_A is-a class_B
代码层面:class_A extends class_B
(2)聚合关系:class_A has-a class_B
代码层面:类A以类B对象为属性或是调用了类B的属性
发表于 2019-09-11 10:52:57 回复(0)
由题意可知:
Gadget是子类,有Spring和Sprocket的引用
Widget是父类,有Sprocket的引用。
故排除BD
A:Gadget继承widget,故可以使用父类的非静态成员变量Sprocket,正确
C:比较有争议,因为父类题目中没有说包含Spring的引用。但是要求选两项,故正确
发表于 2019-10-21 15:47:52 回复(1)
注意is-a和has-a Widget是父类,Gadget是子类 子类可以继承父类的成员变量
发表于 2019-07-17 15:17:14 回复(0)
碰到这种题咋办?直接猜呗,哈哈。
发表于 2019-08-17 14:46:32 回复(2)

垃圾题目,题目都描述不清楚

发表于 2019-08-12 09:22:00 回复(0)
首先从定义上来说,is-a 是继承关系。在继承关系中,一个子类继承于父类,其本身可以称之为父类。例如:狗继承于动物,可以说狗是一种动物。has-a 是组成关系,在组成关系中,一个对象将一个或者多个其它对象作为自己的成员。
那么,首先排除D。
A:由于Widget has-a Sprocket,因此Widget类将具有Sprocket类的对象;同时Gadget has-a Spring,因此Gadget类将具有Spring类的对象,所以A正确。
与A的分析方式一致,我觉得B也是正确的;
C选项中,题目中没有说明Widget类可以具有Spring类的对象,所以我选择了AB,但是答案的AC,还请大佬指点一下。
发表于 2019-09-16 16:53:23 回复(3)
Gadget has-a Sprocket and Gadget has-a Spring and Gadget is-a Widget and Widget has-a Sprocket 
这题可以把has-a看成包含,把is-a看成继承,翻译后:
Gadget 要包含Sprocket 
并且 Gadget 要包含 Spring 
并且 Gadget 要继承 Widget 
并且 Widget 要包含 Sprocket 

 同时满足以上这4个条件即可,并且要知道 子类可通过继承父类,得到父类的成员变量

class Widget { Sprocket s; }
class Gadget extends Widget { Spring s; }
选项A,满足

class Widget { }
class Gadget extends Widget { Spring s1; Sprocket s2; }
选项B,不行,父类Widget 没包含Sprocket 

class Widget { Sprocket s1; Spring s2; }
class Gadget extends Widget { }
↑选项C,满足

class Gadget { Spring s; }
class Widget extends Gadget{ Sprocket s; }
选项D,不行,首先父关系就搞错了


编辑于 2021-07-05 16:47:33 回复(0)
woc我选了bd
发表于 2019-08-19 12:41:15 回复(1)
这题怎么跟脑筋急转弯似的
发表于 2022-04-15 21:38:05 回复(0)
Gadget has-a Sprocket and Gadget has-a Spring and Gadget is-a Widget and Widget has-a Sprocket  这题可以把has-a看成包含,把is-a看成继承,翻译后: Gadget 要包含Sprocket  并且 Gadget 要包含 Spring  并且 Gadget 要继承 Widget  并且 Widget 要包含 Sprocket   同时满足以上这4个条件即可,并且要知道 子类可通过继承父类,得到父类的成员变量
发表于 2021-11-02 19:39:50 回复(0)
类与类关系:像(like)是(is)有(has)用(use)
发表于 2021-11-02 10:58:19 回复(0)
is-a   表示继承 has-a表示从属 like-a表示组合:A like-a B表明B就是A的接口 use-a表示依赖
发表于 2021-10-14 04:54:36 回复(0)
is a表继承 has a表从属like a表组合
发表于 2021-03-22 13:45:29 回复(0)
类型与类型之间的关系【is a、has a、like a】 is a Cat is a Animal(猫是一只动物) 但凡满足 is a 的表示都可以设置为继承关系 has a Customer has a FoodMenu(顾客有一个菜单) 但凡满足has a 的表示“关联关系”, 关联关系通常以”属性“的形式存在 like a Cooker like a FoodMenu(厨师就像一个菜单一样) 凡是满足like a关系的表示”实现关系“ 实现关系通常是”类实现接口“
发表于 2021-03-21 08:37:18 回复(0)
我想知道为什么C是对的,B就错了???
发表于 2020-09-16 15:43:07 回复(1)
不该错不该错,掌嘴!
发表于 2020-09-14 15:03:05 回复(0)
B选项怎么错了?
发表于 2019-09-02 11:16:01 回复(1)