首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java中-A关系和HAS-A关系有什么不同?

在Java中-A关系和HAS-A关系有什么不同?
EN

Stack Overflow用户
提问于 2016-03-23 02:46:01
回答 2查看 85.7K关注 0票数 23

我是JAVA的新手,刚刚开始学习IS-A和HAS-A关系,但我不能得到太多的.I,想知道这两个有什么不同,我们什么时候应该使用IS-A和HAS-A?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-23 02:46:58

IS-A关系就是继承。继承的类称为子类或子类。另一方面,HAS-A关系就是组合。

在OOP中,IS-A关系是完全继承的。这意味着,子类是父类的一种。例如,苹果就是一种水果。因此,您将扩展水果以获得苹果。

代码语言:javascript
复制
class Apple extends Fruit {

}

另一方面,组合意味着创建引用其他对象的实例。例如,一个房间有一张桌子。因此,您将创建一个教室,然后在该类中创建一个table类型的实例。

代码语言:javascript
复制
class Room {

    Table table = new Table();

}

HAS-A关系是动态(运行时)绑定,而继承是静态(编译时)绑定。如果您只是想重用代码,并且您知道这两者不是同一类型的代码,那么可以使用组合。例如,你不能从厨房继承烤箱。厨房有-一个烤箱。当你觉得有一种自然的关系,就像苹果是一种水果,使用继承。

票数 57
EN

Stack Overflow用户

发布于 2016-03-23 02:51:42

Foo is-a Bar:

代码语言:javascript
复制
public class Foo extends Bar{}

Foo has-a Bar

代码语言:javascript
复制
public class Foo {
    private Bar bar;
}
票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36162714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档