What is the difference between IS -A relationship and HAS-A relationship in Java?
本问题已经有最佳答案,请猛点这里访问。
我是Java新手,刚刚开始学习IS-A和HAS-A关系,但得不到多少。我想想象一下这两个是如何不同的,什么时候我们应该使用IS-A和HAS-A?
关系就是继承。继承的类称为子类或子类。另一方面,有-一种关系就是组成
在OOP中,IS-关系完全是继承关系。这意味着子类是父类的一种类型。例如,苹果就是一种水果。所以你将延长水果的长度来得到苹果。
1 2 3 4 | class Apple extends Fruit{ . . } |
另一方面,组合意味着创建引用其他对象的实例。例如,一个房间有一张桌子。因此,您将创建一个教室,然后在该类中创建类型表的实例。
1 2 3 4 5 6 7 | class Room{ : Table table = new Table (); : : } |
HAS-A关系是动态(运行时)绑定,而继承是静态(编译时)绑定。如果您只想重用代码,并且知道这两种代码不是同一种类型,那么就使用组合。例如,你不能用厨房里的烤箱。厨房有烤箱。当你觉得有一种自然的关系就像苹果是一种水果的使用继承。
FO IS-A酒吧:
1 | public class Foo extends Bar{} |
福阿哈斯酒吧
1 2 3 | public class Foo { private Bar bar; } |