Я не могу отправить значения конструктору базового класса - PullRequest
0 голосов
/ 26 июня 2018

Я прикрепил свой фрагмент кода на следующих изображениях. У меня есть два класса здесь. Один - это базовый класс, а другой - подкласс. Оба класса имеют свои собственные конструкторы. Я создал объекты базового класса и подкласса в тестовом классе и отправил некоторые значения в конструктор. Когда я компилирую свою программу, я получаю сообщение об ошибке «конструктор в классе не может быть применен к данным типам» и причина, поскольку «фактические и формальные аргументы различаются по длине». Почему я получаю эту ошибку?

class base {
    int a;
    int b;
    base(int w, int x) {
        a = w;
        b = x;
    }
    public void display() {
        System.out.println("value of a is: " + a);
        System.out.println("value of b is: " + b);
    }
}
class sub extends base {
    int c;
    int d;
    sub(int y, int z) {
        c = y;
        d = z;
    }
    public void display() {
        System.out.println("value of a is: " + c);
        System.out.println("value of b is: " + d);
    }
}
class test {
    public static void main(String[] args) {
        base b1 = new base(10, 20);
        sub s1 = new sub(30, 40);
        b1.display();
        s1.display();
    }
}

1 Ответ

0 голосов
/ 26 июня 2018

Создайте конструктор по умолчанию в вашем базовом классе.

ваш конструктор подкласса неявно вызывает конструктор по умолчанию базового класса.

Если вы хотите инициализировать ваш базовый класс элементами подкласса, вы можете вызвать super(int, int) из конструктора подкласса.

В приведенном выше примере вы можете использовать, как показано ниже,

 sub(int y, int z) {
  super(y,z);
    c = y;
    d = z;
}

в этом случае базовый класс содержит те же значения, которые были переданы подклассу.

если вы не вызываете super(int, int) из конструктора подкласса, внутренне он вызывает конструктор по умолчанию базового класса, как показано ниже

sub(int y, int z) {
  super();
    c = y;
    d = z;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...