我负责的延伸类JFrame
。
这不是我的代码,它使一个呼叫super
它开始修建GUI之前。 我不知道,因为我一直只是访问的父类的方法,而不必调用为什么这样做super();
我负责的延伸类JFrame
。
这不是我的代码,它使一个呼叫super
它开始修建GUI之前。 我不知道,因为我一直只是访问的父类的方法,而不必调用为什么这样做super();
还有就是要隐式调用super()
不带参数对于有父所有的类-这是Java中的每个用户定义的类-所以称它明确地通常不需要。 但是,您可以使用调用super()
带参数,如果父类的构造采用参数,并希望指定他们。 此外,如果父类的构造需要的参数,它有没有默认参数的构造函数,你需要调用super()
与参数(S)。
一个例子,要显式调用super()
使您能够框架的标题一些额外的控制:
class MyFrame extends JFrame
{
public MyFrame() {
super("My Window Title");
...
}
}
你的父类的空构造函数的调用super()
是自动完成的,当你不自己做。 这是你从来没有做到这一点在你的代码的原因。 它是为你做。
当你的超没有一个无参数的构造函数,编译器将需要向super
适当的参数。 编译器将确保你正确实例化的类。 因此,这是不是你不用担心太多的东西。
无论您调用super()
在构造函数或没有,它不会影响你打电话给你的父类的方法能力。
作为一个侧面说明,有人说,这是一般最好手动打这通电话为了清楚起见。
我们可以通过使用超方法来访问超类元素
考虑到我们有两个类,父类和子类,与foo方法的不同实现。 现在,在子类中,如果我们要调用父类的foo方法,我们可以通过super.foo这样做(); 我们还可以访问由超()方法的父元素。
class parent {
String str="I am parent";
//method of parent Class
public void foo() {
System.out.println("Hello World " + str);
}
}
class child extends parent {
String str="I am child";
// different foo implementation in child Class
public void foo() {
System.out.println("Hello World "+str);
}
// calling the foo method of parent class
public void parentClassFoo(){
super.foo();
}
// changing the value of str in parent class and calling the foo method of parent class
public void parentClassFooStr(){
super.str="parent string changed";
super.foo();
}
}
public class Main{
public static void main(String args[]) {
child obj = new child();
obj.foo();
obj.parentClassFoo();
obj.parentClassFooStr();
}
}
它只是简单地调用父类的默认构造函数。
我们可以访问使用超父类会员()
如果你的方法会覆盖其父类的方法之一,您可以通过使用关键字调用覆盖方法super
。 您还可以使用超级指一个隐藏字段(虽然隐藏字段灰心)。 考虑这个类,超类:
public class Superclass {
public void printMethod() {
System.out.println("Printed in Superclass.");
}
}
//这是一个子类,称为子类,重写printMethod()
public class Subclass extends Superclass {
// overrides printMethod in Superclass
public void printMethod() {
super.printMethod();
System.out.println("Printed in Subclass");
}
public static void main(String[] args) {
Subclass s = new Subclass();
s.printMethod();
}
}
在子类中,简单名称printMethod()
是指一个子类中声明,它覆盖了一个超类中。 因此,指printMethod()
从超类继承,子类必须使用合格的名称,使用超级如图所示。 编译和执行子类打印以下内容:
Printed in Superclass.
Printed in Subclass