有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何用构造函数扩展类

我很难将calCir课程扩展到主要课程 我有一个构造函数

class calCir {
    double radius;
    calCir(double r) {
        radius = r;
    }

    double AreaCircle() {
        return Math.PI * (radius * radius);
    }
    double CircumferenceCircle() {
        return 2 * Math.PI * radius;
    }
}

我想使用Main扩展calCir,但由于构造函数的原因出现了一个错误

class Main{
public static void main(String args[]) {

错误:类calCir中的构造函数calCir不能应用于给定类型; 主类扩展了calCir 我对Java相当陌生,所以我仍然对如何使用继承感到困惑

下面是完整的代码,如果需要的话 https://repl.it/NA5S/8


共 (1) 个答案

  1. # 1 楼答案

    首先,在这种情况下,让Main扩展CalCir是没有意义的

    第二,回到你问的具体问题

    当一个类(例如Child)从另一个类(例如Parent)扩展时,在Child的构造函数中,它总是需要调用其父类的构造函数。如果您没有显式调用any,编译器将自动假定您正在调用父类的no-arg构造函数

    例如

    class Child extends Parent {
        Child() {
            // do something
        }
    }
    

    相当于

    class Child extends Parent {
        Child() {
            super();
            // do something
        }
    }
    

    如果在Parent中声明了一个带参数的构造函数,但没有声明arg-ctor:

    class Parent {
         Parent(int foo) {...}
    }
    

    Child调用Parent的no arg ctor是非法的,因为它根本不存在

    因此,您需要明确地告诉编译器要调用哪个ctor:

    class Child extends Parent {
        Child() {
            super(123);
            // do something
        }
    }