【问题标题】:super argument correct or wrong超级论点正确或错误
【发布时间】:2014-04-19 07:35:56
【问题描述】:

构造函数可以使用超类构造函数调用来调用直接超类的构造函数吗? (即super(namelist);

【问题讨论】:

  • 是的,这就是关键字的目的。
  • 实际测试这不会比在 SO 上提问更快吗?
  • 鼠标悬停在downvote按钮上显示:“这个问题没有显示任何研究工作”,恐怕在这里有点适用

标签: java


【解决方案1】:

构造函数可以使用超类构造函数调用来调用直接超类的构造函数吗?

是的,它可以。但仅作为(子类)构造函数主体的第一条语句。

public class A {
    public A(List<String> namelist) {
    }
    public A() {
    }
}

public class B extends A {
    public B(List<String> namelist) {
       super(namelist);
    }
    public B() {
       // implicitly calls 'super()'
       List<String> namelist = ...;
       super(namelist);  // Syntax error.
    }
}

【讨论】:

    【解决方案2】:

    是的,你可以从子类调用构造函数。即

    class A
    {
     public A()
     {
       System.out.println("Class A");
     }
      public A(String str)
     {
       System.out.println("Class A"+str);
     }
    }
    class B extends A
    {
     public B()
     {
       super("Hello World");
     }
    }
    

    【讨论】:

    • 特别是在这种情况下,我认为带有左大括号而不换行的编码风格会节省很多行;-)
    • 那么你输入它会更简单。我不明白为什么你的 IDE 在这里很重要 oO 无论如何,这只是一个题外话;)
    猜你喜欢
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    • 2017-07-23
    • 2020-04-01
    • 2020-09-24
    • 2016-05-17
    • 1970-01-01
    相关资源
    最近更新 更多