Java中的“IS -A”关系和“HAS-A”关系有什么区别?
2022-09-01 05:34:33
我是JAVA的新手,刚刚开始学习“IS-A”和“HAS-A”关系,但我并没有真正理解它。
“IS-A”和“HAS-A”有什么区别?
何时应使用“IS-A”,何时应使用“HAS-A”?
我是JAVA的新手,刚刚开始学习“IS-A”和“HAS-A”关系,但我并没有真正理解它。
“IS-A”和“HAS-A”有什么区别?
何时应使用“IS-A”,何时应使用“HAS-A”?
IS-A 关系是继承。继承的类称为子类或子类。另一方面,HAS-A关系是组合。
在 OOP 中,IS-A 关系是完全继承的。这意味着,子类是父类的一种类型。例如,苹果就是一种水果。所以你将延长水果以获得苹果。
class Apple extends Fruit {
}
另一方面,组合意味着创建具有对其他对象引用的实例。例如,一个房间有一张桌子。因此,您将创建一个教室,然后在该类中创建类型表的实例。
class Room {
Table table = new Table();
}
HAS-A 关系是动态(运行时)绑定,而继承是静态(编译时)绑定。如果您只想重用代码,并且您知道两者不是同一种,请使用组合。例如,您不能从厨房继承烤箱。厨房配有烤箱。当你觉得有一种自然的关系,就像苹果是水果使用继承。
Foo is-a Bar:
public class Foo extends Bar{}
傅家酒吧
public class Foo {
private Bar bar;
}