你是什​​么意思课和它的实例? (JAVA)

时间:2015-07-23 16:50:39

标签: java class oop object instance

当我查看一些问题时,我发现了这个问题。它询问花和玫瑰之间的关系是什么。所以选择是继承,类及其实例和接口&它的实施。

现在我的问题是答案应该来自我所知道的继承,但答案实际上是类和它的实例。那么我想知道的是类及其实例究竟意味着什么?据我所知,一个实例意味着一个类的对象。

感谢您的时间。

5 个答案:

答案 0 :(得分:4)

一个类就像template,从中创建了objects。在您提到的示例中,花可以是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 {
    ..
}

这样的子类
public class Rose extends Flower {
    ..
}

public class Lily extends Flower {
    ..
}

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

更新1 您可以从此问题陈述中找到多个inheritance级别。这一切都取决于您的应用程序所需的详细程度。如果您只想将任何花朵视为一个实体,您可以使用Flower作为一个类,并使用不同的花卉实例作为您的对象。

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

希望这可以解决疑问

答案 1 :(得分:2)

4)所有答案都是正确的。

继承 - 如果存在特定于玫瑰的其他行为,而这些行为不会表征任何其他花,则您将使用继承扩展基础。另一个选择是使用合成(你至少应该赞成它)。

类及其实例 - 如果除了名称之外没有添加玫瑰的行为。你将有一个构造函数到花类,制作一个玫瑰就像实例化它的名称一样简单,传递给构造函数。

界面&它的实施 - 如果每种类型的花具有不同的行为,但同时应遵循确定的合同。它就像第一个,除了你不需要基类。

答案 2 :(得分:1)

花只给模板实际的实例rose。即,不存在物理/虚拟,存在具有花的特征的东西,它们被称为花的实例

答案 3 :(得分:1)

正确的是,花 - >玫瑰将成为继承的一个例子。花更通用,玫瑰是一种特殊的花。

为了与花的例子保持一致,玫瑰的概念将成为阶级,而个体的实际玫瑰将成为实例。

类定义类型,它具有什么行为,它可以作为数据(或状态)具有哪些类型的值。实例是该类的成员,具有其状态的特定值。

答案 4 :(得分:1)

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

如果有一个花类,那么

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

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