2

如果它不是 Oracle 文档中所述的类的成员,我们称它为什么构造函数:http: //docs.oracle.com/javase/tutorial/java/IandI/subclasses.html

4

6 回答 6

5

我认为为了方便起见,“成员”一词被定义为排除构造函数。构造函数,即使是公共的,也不会被继承;成员是继承的(除非它们是静态的和/或私有的)。在谈论继承规则时总是不得不说“除了构造函数之外的成员”会很尴尬。

来自Java 语言规范,第 8.2 节

构造函数、静态初始化程序和实例初始化程序不是成员,因此不会被继承。

只需将构造函数称为“构造函数”。

于 2013-01-24T20:22:04.120 回答
3

它是每个类都有的特殊方法,在创建对象后调用。在JVM中使用invokespecialso调用它,让我们称之为special方法吗?

而且由于 Java 中只有 1 个特殊方法 - 他们都称它为“构造函数”

于 2013-01-24T20:24:18.310 回答
1

所有文档都在说构造函数默认情况下不被继承。由于构造函数是在内存堆中构造对象时调用的方法,所以一旦创建了继承自超类的子类,默认情况下不会调用超类的构造函数。

例如,如果你有一个类Vehicle和一个子类Car,假设Vehicle构造函数如下:

public Vehicle(String vehName) {
    this.vehName = vehName;
}

然后,即使您的类Car继承自 class VehiclevehName成员(字段)也不会像上面的构造函数那样设置。

所以你需要做这样的事情:

public Car(String vehName) {
    super(vehName);
}

希望有帮助

于 2013-01-24T20:27:44.863 回答
0

在 Java 中,类主体(大括号之间的区域)可以包含以下关键项:(1)字段(2)方法(3)其他类(嵌套类)(4)构造函数(5)初始化器

从特定类创建的对象应采用类似于创建它的蓝图(类)的形状。现在,如果您查看可以包含在类主体中的项,则只有项 (1) 到 (3) 有助于确定可以从特定类定义中创建哪种对象。

构造函数和初始化器只在对象的实际创建中起作用(例如,已经定义的字段的初始化),但不决定该对象应该携带什么形状/状态,以及它将显示什么行为。

出于这个原因,对我来说,将项目 (1) 称为 (3) 类成员是有意义的(即类成员是类主体中的那些项目,它们确定从类创建的对象的外观和行为方式);而构造函数和初始化器不是成员,因为它们在类定义中的缺失不会影响类的状态和行为。

因此,只有类成员可以被继承,因为继承背后的重点是启用子类重用其超类的状态和行为。

于 2017-07-02T19:43:41.957 回答
-1

构造函数是类中的一种方法,用于创建该类的新实例。成为班级成员仅意味着所讨论的项目在班级中。

于 2013-01-24T20:31:06.213 回答
-1

构造函数是一个名称与类相同的方法。它用于初始化类的对象。它隐含在行动中。参数构造函数用不同的值初始化对象。

于 2015-09-06T11:03:40.890 回答