Java 超级(变量名称)之间的差异;和super.variableName
Java 超级(变量名称)之间的差异;和super.variableName,java,oop,inheritance,constructor,superclass,Java,Oop,Inheritance,Constructor,Superclass,super(变量名)之间的区别是什么和super.variableName=某物在构造函数中,当您要初始化参数并将其中一个参数分配给父类的变量时 例如,我想实现“Zahnradfraese”的构造函数,它采用参数“int Kennung”,并且该参数应分配给父类“produktionmitel”的属性“Kennung” 当我想从这个父类调用一个变量时,我应该总是使用super,还是在子类中有另一个同名的变量时才使用super super(variableName)之间的区别是什么和super.v
super(变量名)之间的区别是什么
和super.variableName=某物
在构造函数中,当您要初始化参数并将其中一个参数分配给父类的变量时
例如,我想实现“Zahnradfraese”的构造函数,它采用参数“int Kennung”,并且该参数应分配给父类“produktionmitel”的属性“Kennung”
当我想从这个父类调用一个变量时,我应该总是使用super,还是在子类中有另一个同名的变量时才使用super
super(variableName)之间的区别是什么
和super.variableName=某物代码>
method()
(这里,super(variableName)
)是一个方法调用(这里是父级的构造函数调用)
super.variableName=something代码>是对父字段的赋值
当我想从父类调用一个变量时,我应该总是使用super
,还是在子类中有另一个同名的变量时才使用它
super(variableName)
可以初始化父级的内部状态,尤其是super.variableName
。在访问super.variableName之前初始化它是合理的。您列出的两种方法都可以用于此目的。只要确保没有代码重复
我想实现Zahnradfraese
的构造函数,它采用参数int Kennung
,并且该参数应分配给父类produktionmitel
的属性Kennung
将构造函数添加到produktionmitel
,该构造函数接受int
public Produktionmittel(int i) {
kennung = i;
}
从孩子的角度来说:
public Zahnradfraese(int kennung) {
super(kennung);
}
super(variableName)之间的区别是什么
和super.variableName=某物代码>
method()
(这里,super(variableName)
)是一个方法调用(这里是父级的构造函数调用)
super.variableName=something代码>是对父字段的赋值
当我想从父类调用一个变量时,我应该总是使用super
,还是在子类中有另一个同名的变量时才使用它
super(variableName)
可以初始化父级的内部状态,尤其是super.variableName
。在访问super.variableName之前初始化它是合理的。您列出的两种方法都可以用于此目的。只要确保没有代码重复
我想实现Zahnradfraese
的构造函数,它采用参数int Kennung
,并且该参数应分配给父类produktionmitel
的属性Kennung
将构造函数添加到produktionmitel
,该构造函数接受int
public Produktionmittel(int i) {
kennung = i;
}
从孩子的角度来说:
public Zahnradfraese(int kennung) {
super(kennung);
}
因此,super(variableName)
正在调用父类一参数构造函数,并且该逻辑得到执行
super.variableName=something
为父类变量variableName
赋值所以超级(variableName)
调用父类一个参数构造函数,然后执行该逻辑
super.variableName=something
将某物值赋值给父类变量variableNamesuper()
是用于调用父类中构造函数的关键字,必须从子类的构造函数内部调用它。它也必须是第一句话
其中assuper.s
用于设置子类中的变量s
(在父类中声明),并且没有上述限制
请参见以下示例:
class Test {
int s;
Test(int d) {
}
}
class T extends Test {
T() {
super(8);
int d = 99;
super.s = 00;
}
void ss() {
super.s = 99;
}
}
super()
是一个关键字,用于调用父类中的构造函数,必须从子类的构造函数内部调用它。它也必须是第一句话
其中assuper.s
用于设置子类中的变量s
(在父类中声明),并且没有上述限制
请参见以下示例:
class Test {
int s;
Test(int d) {
}
}
class T extends Test {
T() {
super(8);
int d = 99;
super.s = 00;
}
void ss() {
super.s = 99;
}
}
super(arg)调用super类的构造函数,设置变量只是设置变量。(构造函数可能包含更多的逻辑,而不仅仅是分配一个变量,您可以使用第二种方法绕过该变量)
简单的例子:
public class P{
protected String variable1;
private boolean variableInitialized = false;
public P (String s){
this.variable1 = s;
this.variableInitialized=true;
}
}
public class C extends P{
}
在C
中调用super(“x”)
也会设置布尔标志,因为父类“可能期望”它。调用super.variable1=“x”
不会影响布尔标志,您不能更改它,因为它是私有的
作为经验法则,我会说:如果某个变量有一个专用构造函数,那么似乎值得使用它,除非您确实想覆盖该实现。super(arg)调用超类的构造函数,设置变量只会设置变量。(构造函数可能包含更多的逻辑,而不仅仅是分配一个变量,您可以使用第二种方法绕过该变量)
简单的例子:
public class P{
protected String variable1;
private boolean variableInitialized = false;
public P (String s){
this.variable1 = s;
this.variableInitialized=true;
}
}
public class C extends P{
}
在C
中调用super(“x”)
也会设置布尔标志,因为父类“可能期望”它。调用super.variable1=“x”
不会影响布尔标志,您不能更改它,因为它是私有的
作为一条经验法则,我会说:如果某个变量有一个专用的构造函数,那么似乎值得使用它,除非您确实想覆盖该实现。super(variable\u name)
表示构造函数调用,应该是构造函数的第一行。鉴于<