混淆了“超级”关键字在此上下文中的作用

时间:2011-09-07 21:03:03

标签: java super

我仍在努力学习java,如果我错了,请纠正我。 据我所知,super关键字调用类的构造函数。所以我不明白说什么意思

super.paint(g)

例如,或者最近在阅读我遇到的动画时

super.addNotify()

我试着查看关于这两个文档的文档(可能很差)并且它不能充分满足我的好奇心,所以我们就是这样。

对这两个例子或一般情况的任何澄清都将不胜感激。谢谢!

5 个答案:

答案 0 :(得分:7)

super是一个关键字,它是对使用该关键字的类的超类的引用。

因此super()调用超类的构造函数,super(x)调用参数化构造函数,super.paint(g)调用超类的paint()方法。

答案 1 :(得分:4)

不,super关键字引用基类。所以super.f()调用超类的f()方法。

在某些情况下,超类提供了一些基本例程,当您覆盖该函数时,首先调用基类的实现,然后添加自定义代码。这两个例子都是如此。

答案 2 :(得分:3)

让我在代码中描述它:

public class Parent{

    protected void doSomething(){
       ...
    }
}

//notice the extends Parent which is the super
public class Child extends Parent{ 

    public void doSomethingOnParent(){
       super.doSomething(); //calls a method on the parent class
    }
}

答案 3 :(得分:1)

public class A {


public void pirintStr(){

System.out.print("Hello from A");
}

}

public class B extends A{

public void fun(){
 // if you wirte this
printStr(); //this will print Hello from B
//if you want the super class version of this method you can write super keyword 
super.printStr();//this will print Hello from A
}

public void printStr(){
System.out.print("Hello from B");
}
}

答案 4 :(得分:1)

所有其他答案都很清楚。但也许你想知道为什么有人会称之为超级。

Java有一个继承系统,您可以通过该系统从另一个派生类,即从类中获取行为和数据结构,并在另一个类中重用它。这里的关键是(或者,当它被构思时)是重用已经编写的代码,并以某种方式扩展它。