Java中"IS-A"关系和"HAS-A"关系有什么区别?

12 浏览
0 Comments

Java中"IS-A"关系和"HAS-A"关系有什么区别?

这个问题已经有了答案

优先使用组合还是继承?

我是JAVA新手,刚开始学习\"IS-A\"和\"HAS-A\"关系,但我没有真正理解它。

\"IS-A\"和\"HAS-A\"有什么区别?

我应该什么时候使用\"IS-A\",什么时候使用\"HAS-A\"?

admin 更改状态以发布 2023年5月23日
0
0 Comments

Foo是一个Bar:

public class Foo extends Bar{}

Foo有一个Bar:

public class Foo {
    private Bar bar;
}

0
0 Comments

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

在面向对象编程中,IS-A关系完全是继承。这意味着子类是父类的一种类型。例如,苹果是水果。因此,您将扩展水果以获取苹果。

class Apple extends Fruit {
}

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

class Room {
    Table table = new Table();
}

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

0