java - A 类中的构造函数 A 不能应用于给定类型;

标签 java oop

class A{
    A(String s){
        System.out.println("New A" + s);
    }
    public static void main(String[] args){

    }
} 
class B{
    B(String s){
        System.out.println("New B" + s);
    }
    public static void main(String[] args){

    }
}
class C extends A{
    C(String s){
        System.out.println("New C" + s);
    }
    public static void main(String[] args){
    }
}

第 28 行“C(String s){”出现错误

我正在按照类(class)的步骤进行练习。很困惑。非常感谢您帮助解决这个愚蠢的问题。

最佳答案

发生这种情况是因为 C 扩展了 A。为了正确扩展,您还需要调用 A 的构造函数。A 唯一可用的构造函数是 A(String s)。以下内容应该有效:

C(String s){
    super(s); // calls new A(s)
    System.out.println("New B" + s);
}

基本上,当您在子类(本例中为 C)中创建构造函数时,需要调用父类(super class)构造函数来设置与 A 相对应的“对象的一部分”(由于缺乏更好的术语) 。当您没有显式调用父类(super class)构造函数时,它将自动调用不带任何参数的 super() - 仅当存在构造函数 A()< 时才有效。/1

1 这很复杂,因为如果您根本不在父类(super class)中创建构造函数,它实际上将具有一个隐式构造函数,其内容如下: public A() {},这意味着它不带任何参数,也不执行任何特定操作。

关于java - A 类中的构造函数 A 不能应用于给定类型;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28653374/

相关文章:

java - 使用 HTML5 服务器事件和 Java Servlet 时如何防止 net::ERR_INCOMPLETE_CHUNKED_ENCODING?

java - java中如何读取这种文本文件

c++ - 类和更新数据

javascript - 是否可以从对象函数内部在 Canvas 上绘制?

java - 我的 log4j 过滤器出了什么问题? (这会让tomcat挂掉!)

java - 如何从 spring 实例化的 POJO 类(不是 servlet)中读取 manifest.mf?

Python 类派生自 pandas DataFrame,具有 list/DataFrame 属性

php - 在现实世界中使用 PHP 进行数据库连接的示例 OOP

C#/DDD : How to model entities with internal state objects not instantiable by the domain layer when using onion architecture?

java - 2 个 OBB 的联络点?