java构造函数在实现中调用另一个被重写的构造函数

标签 java android

下面的代码无法运行,我不明白原因,为什么会这样?如果我能找到一种方法在另一个重写的构造函数中调用构造函数?

尽管如此,我知道可以有一个解决方案,将公共(public)初始化代码放在类函数中。所以,请原谅我这个愚蠢的问题。

Public AClass extends BClass {
    AClass(Context c) {
       super(c);
       //below has common init code
       //init data and some operations
      // other operations

    }

    AClass(Context c, Attr a) {
       super(c, a);
       this(c)  // error
    }
}

另外,下面的也不起作用,

AClass(Context c, Attr a) : this(c) {
   super(c, a);
}

非常感谢您的善意帮助。

最佳答案

根据 BClass 构造函数的作用,以下内容可能有效:

public AClass extends BClass {
    AClass(Context c) {
        this(c, (Attr) null);
        // below has common init code
        // init data and some operations
        // other operations
    }

    AClass(Context c, Attr a) {
        super(c, a);
    }
}

您只能从构造函数中调用一个构造函数。你不能调用this(另一个构造函数)super(父类(super class)的构造函数),并且你不能调用this super 多次。并且您只能将它们作为构造函数的第一条语句调用。

关于java构造函数在实现中调用另一个被重写的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20741969/

相关文章:

java - 如何在 Java 中检查某一天是否在本周?

java - 如何运行一个在执行 main 方法后继续工作的测试类

android - 处理 FirebaseUI 登录和离线 Firestore 数据?

java - 以编程方式设置多个 ImageView 的 setImageResource() 会导致崩溃

android - 从 Android 联系人数据库中搜索电话号码

java - 在 JavaScript/Groovy 中使用正则表达式屏蔽手机号码

java - Android url获取文件失败

java - 如何计算当前在我的应用程序中打开的第三方应用程序的时间

android - 如何在不同的包中定义 Activity

android - 通过样式 ID 访问样式项