Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 超级(变量名称)之间的差异;和super.variableName_Java_Oop_Inheritance_Constructor_Superclass - Fatal编程技术网

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
某物
值赋值给父类变量
variableName

super()
是用于调用父类中构造函数的关键字,必须从子类的构造函数内部调用它。它也必须是第一句话

其中as
super.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()
是一个关键字,用于调用父类中的构造函数,必须从子类的构造函数内部调用它。它也必须是第一句话

其中as
super.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)
表示构造函数调用,应该是构造函数的第一行。鉴于<