【问题标题】:Call to super must be first statement in constructor? [duplicate]调用 super 必须是构造函数中的第一个语句? [复制]
【发布时间】:2016-11-26 15:22:32
【问题描述】:
public class Gonderi {                                      
    int kullaniciId;                                        
    int gonderiId;                                          

    public void Gonderi(int kullaniciId, int gonderiId) {
        super();
        this.kullaniciId = kullaniciId;
        this.gonderiId = gonderiId;
    }

...

这是我的代码的一部分。编译器给出错误“调用 super 必须是构造函数中的第一个语句”。但是super() 已经是构造函数的第一条语句了。我怎么解决这个问题?谢谢。

【问题讨论】:

  • 那不是构造函数。
  • @tnw 什么样的东西是构造函数?
  • @user6551379 请只问全能的谷歌。几乎所有的 Java 入门教程都涵盖了这一点。如果您懒得进行一些尝试性研究并帮助自己,那么您将很难学习这些东西。
  • 提示:当你完全不了解 Java 时,不要使用 Android。说真的:Android 在某种程度上是一个“高级”主题,但了解什么是构造函数、如何使用它们以及它们与普通方法不同的原因是绝对基本的东西。含义:请退后一步,考虑先学习那些基本的东西。我向您保证:如果您不这样做,您的“Android”体验将相当令人沮丧;并且可能很快结束;因为无论你做什么,你都会遇到“奇怪”的问题。
  • @tnw 实际上你大部分是对的,但我的研究尝试是错误的。我刚刚搜索了这个错误,无论谁回答,他们都在向提问者说“那不是构造函数”。所以我无法从任何地方得到答案,所以我自己问了我的问题。然后你这样回答,我对那种答案太厌倦了,所以我问什么是构造函数,很累,没有期待答案。所以你说得对,如果有人懒得去搜索它就不会成功。但我不是那种人,只是累和无聊

标签: java android superclass


【解决方案1】:

删除void,你上面提到的那个不是构造函数。它是一个函数。构造函数应如下所示

  public Gonderi(int kullaniciId, int gonderiId) {
   super();
   this.kullaniciId = kullaniciId;
   this.gonderiId = gonderiId;
  }

【讨论】:

    【解决方案2】:

    构造函数没有返回值,但你有(void):

    public void Gonderi(int kullaniciId, int gonderiId) {
    

    所以删除void 并有一个合适的构造函数:

    public Gonderi(int kullaniciId, int gonderiId) {
    

    在这样的改变之后,在那里拨打super()是合法的。

    【讨论】:

    • 成功了,谢谢!但是不放“void”、“int”等不就意味着函数或方法是“void”吗?
    • 在尝试回答之前,请尽量找到重复项。这个问题每天都会被问到。要么投票关闭,要么作为重复或拼写错误(无意写入)。
    • No void 仅用于方法中,构造函数具有不允许任何返回值的特定语法。
    猜你喜欢
    • 2013-12-10
    • 1970-01-01
    • 2020-07-12
    • 2012-12-13
    • 2017-01-01
    • 1970-01-01
    • 2019-03-09
    • 2012-02-13
    • 1970-01-01
    相关资源
    最近更新 更多