我仍在努力学习java,如果我错了,请纠正我。 据我所知,super关键字调用类的构造函数。所以我不明白说什么意思
super.paint(g)
例如,或者最近在阅读我遇到的动画时
super.addNotify()
我试着查看关于这两个文档的文档(可能很差)并且它不能充分满足我的好奇心,所以我们就是这样。
对这两个例子或一般情况的任何澄清都将不胜感激。谢谢!
答案 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有一个继承系统,您可以通过该系统从另一个派生类,即从类中获取行为和数据结构,并在另一个类中重用它。这里的关键是(或者,当它被构思时)是重用已经编写的代码,并以某种方式扩展它。