在java中没有参数的super()

时间:2014-07-16 23:02:15

标签: java android super

我查看本教程: http://www.developerfeed.com/building-todo-list-app-android-using-sqlite

我不明白的是这段代码:

public Task()
{
    this.taskName=null;
    this.status=0;
}
public Task(String taskName, int status) {
    super();
    this.taskName = taskName;
    this.status = status;
}

为什么需要在这一点上调用super()?

编辑:我之所以问的原因是因为我个人觉得没有必要把它放在那里。

5 个答案:

答案 0 :(得分:1)

不需要调用没有参数的super()。当您调用子类的构造函数时,将自动调用0参数超类构造函数。无论你是否打电话都没关系。

答案 1 :(得分:1)

super()专门调用当前类继承的类的构造函数。

在这种情况下,对super()方法的调用是调用Object类的构造函数,所有类都是原始继承的。

你是对的;在这种特殊情况下,根本不需要或不需要调用super()。

使用super()的示例可以通过JFrame类的引用轻松完成。

public class MyFrame extends JFrame {

public static final String TITLE = "My JFrame";

public MyFrame() {
    //call constructor of super class (JFrame)
    //the String parameter is the title of the frame
    super(TITLE);

    //other code here
}

//assume other methods are here
}

答案 2 :(得分:1)

  

为什么需要在这一点上调用super()?

没有这样的需要。编译器默认将它放入。

答案 3 :(得分:0)

super(),用于调用父构造函数,我认为你的类不是从某个类扩展的,所以在JAVA中纯类,从Object扩展。当你调用super()时,你在这种情况下调用父构造函数Object()。 我的构造函数public Task(String taskName, int status)您没有打电话给public Task()您的类正在调用Object构造函数Object()

检查一下。 http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html

答案 4 :(得分:0)

Super用于调用父类。扩展类时,可以从子类中的父类调用函数或变量。

例如,看看这个伪代码,哪个子代使用父类

中定义的int
Public class Child extends Father{
Int age = 21;
Int ageDiff = Super.age - age;
}

不需要代码中的超级。