如果它不是Oracle doc中所述类的成员,我们称之为构造函数:http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html
答案 0 :(得分:5)
我认为术语“成员”的定义是为了方便起见而排除构造函数。建筑师,即使是公共建筑师,也不是遗传的;成员是继承的(除非它们是静态和/或私有的)。在谈论继承规则时,总是不得不说“除了构造函数之外的成员”,这会很尴尬。
来自Java Language Specification, §8.2:
构造函数,静态初始值设定项和实例初始值设定项不是成员,因此不会继承。
只需调用构造函数“构造函数”。
答案 1 :(得分:3)
它是每个类都有的特殊方法,在创建对象后调用。在JVM中,它使用invokespecial
调用,所以,我们只需将其称为special
方法?
由于Java中只有一种特殊方法 - 它们都称之为“构造函数”
答案 2 :(得分:1)
所有文档都说默认情况下不继承构造函数。由于构造函数是在内存堆中构造对象时调用的方法,因此一旦创建了继承自超类的子类,默认情况下不会调用超类的构造函数。
例如,如果您有一个类Vehicle
和一个子类Car
,则假设Vehicle
构造函数如下:
public Vehicle(String vehName) {
this.vehName = vehName;
}
然后,即使您的班级Car
继承自班级Vehicle
,也不会将vehName
成员(字段)设置为上面的构造函数。
所以你需要做这样的事情:
public Car(String vehName) {
super(vehName);
}
希望有所帮助
答案 3 :(得分:0)
构造函数是一个类中的方法,用于创建该类的新实例。 成为一个班级的成员只意味着所讨论的项目在课堂上。
答案 4 :(得分:0)
构造函数是一个名称与类相同的方法。它用于初始化类的对象。这隐含在行动中。参数化构造函数初始化具有不同值的对象。
答案 5 :(得分:0)
在Java中,类主体(大括号之间的区域)可以包含以下关键项:(1)字段(2)方法(3)其他类(嵌套类)(4)构造函数(5)初始化器
从特定类创建的对象应采用与创建它的蓝图(类)类似的形状。现在,如果查看可以包含在类主体中的项目,只有第(1)到第(3)项有助于确定可以从特定类定义创建哪种对象。
构造函数和初始化程序仅参与对象的实际创建(例如,已定义字段的初始化),但不确定对象应携带的形状/状态,以及它将显示的行为。
出于这个原因,对我来说,调用item(1)到(3)类成员是有意义的(即类成员是类主体中确定从类创建的对象如何看起来和行为的那些项) ;而构造函数和初始化函数不是成员,因为它们在类定义中的缺失不会影响类的状态和行为。
因此,只有类成员可以继承,因为继承背后的重点是启用子类重用状态和超类的行为。