我是JAVA的新手,刚刚开始学习IS-A和HAS-A关系,但我不能得到太多的.I,想知道这两个有什么不同,我们什么时候应该使用IS-A和HAS-A?
发布于 2016-03-23 02:46:58
IS-A关系就是继承。继承的类称为子类或子类。另一方面,HAS-A关系就是组合。
在OOP中,IS-A关系是完全继承的。这意味着,子类是父类的一种。例如,苹果就是一种水果。因此,您将扩展水果以获得苹果。
class Apple extends Fruit {
}
另一方面,组合意味着创建引用其他对象的实例。例如,一个房间有一张桌子。因此,您将创建一个教室,然后在该类中创建一个table类型的实例。
class Room {
Table table = new Table();
}
HAS-A关系是动态(运行时)绑定,而继承是静态(编译时)绑定。如果您只是想重用代码,并且您知道这两者不是同一类型的代码,那么可以使用组合。例如,你不能从厨房继承烤箱。厨房有-一个烤箱。当你觉得有一种自然的关系,就像苹果是一种水果,使用继承。
发布于 2016-03-23 02:51:42
Foo is-a Bar:
public class Foo extends Bar{}
Foo has-a Bar
public class Foo {
private Bar bar;
}
https://stackoverflow.com/questions/36162714
复制相似问题