class 及其实例是什么意思? (java)

what do you mean by class and its instance ? (java)

我在查一些问题的时候发现了这个问题。它问一朵花和一朵玫瑰之间有什么关系。所以选择是继承,class 及其实例和接口及其实现。

现在我的问题是答案应该来自我所知道的继承,但答案实际上是 class 及其实例。那么我想知道的是 class 及其实例的实际含义是什么?据我所知,到目前为止,实例是指 class.

的对象

感谢您的宝贵时间。

A flower 只是给模板实际的 instancerose。即,不存在物理上/虚拟,存在具有花特征的事物,它们被称为实例花

没错,flower->rose 是继承的一个例子。花比较通用,玫瑰是一种特殊的花。

为了与花示例保持一致,玫瑰的概念将是 class,而单个实际的玫瑰将是实例。

A class 定义类型,它有什么行为,它可以有什么类型的值作为数据(或状态)。一个实例是一个对象,它是 class 的成员,具有特定的状态值。

A class 就像 template 从中创建 objects。在您提到的示例中,花可能是 class,其中 rosedandelionlily 等可能是实例。例如,

public class Flower {
    private String type;
    ..
    public Flower(String type) {
        this.type = type;
    }
    ..

}

并将它的实例创建为

Flower rose = new Flower("rose");
Flower lily = new Flower("lily");

这是一个可行的解释。

我也能看出你的逻辑思维过程。本来可以

public class Flower {
    ..
}

和子class喜欢

public class Rose extends Flower {
    ..
}

public class Lily extends Flower {
    ..
}

但是,细微之处取决于实施。这取决于你如何看待问题(或者更确切地说,提问者如何看待问题)。也可以是 an interface and its implementation。同样,取决于实施。

更新 1 您可以从这个问题陈述中看出 inheritance 的多个级别。这完全取决于您在应用程序中需要的详细程度。如果您只想将任何花朵视为一个实体,则可以将 Flower 用作 class 并将花朵的不同实例用作您的对象。

另一种情况是当您在花朵中看到一定程度的细节时。您想谈论不同类型的玫瑰或不同类型的百合花,比如它们的颜色、大小、位置、季节等。在这种情况下,仅 Flower class 是不够的。 Rose 可能包含仅与玫瑰相关的详细信息 (properties),而 Lily 可能包含一些仅与百合相关的信息。此时,只有 Flower 不再相关,因为它们不会为您提供任何重要信息。现在,您可以将 Flower 用作 abstract classinterface,仅表示更高级别的 properies 或确保一定会找到某些 implementations。然后为每个继承的花朵创建单独的 classes,例如 RoseLily

希望这能消除疑虑

实际上,the relationship between flower and the rose 不适合 class and its instance

class and its instance 如果有一朵花 class 就可以放在这里,而 class 只有一个实例是玫瑰。既然世界上有很多玫瑰,就不适合了。如果你声称一朵玫瑰是代表所有玫瑰属性的花的实例,而不是一朵玫瑰,我会争辩说有许多类型的玫瑰具有不同的属性(例如黄玫瑰和红玫瑰),所以一个实例不能代表所有的玫瑰。

我会说继承更合适,因为玫瑰是一种花。

4) 所有答案都正确。

继承 - 如果有其他特定于玫瑰的行为,而不是任何其他花的特征,您将使用继承扩展基础。另一种选择是使用组合(你至少应该喜欢它)。

Class 及其实例 - 如果玫瑰除了其名称外没有添加其他行为。您将拥有花的构造函数 class,制作一朵玫瑰就像将其名称传递给构造函数进行实例化一样简单。

接口及其实现 - 如果每种花都有不同的行为,但同时应该遵循确定的契约。它就像第一个,除了你不需要基础 class.