Ошибка компиляции: конструктор A в классе A не может быть применен к данным типам - PullRequest
0 голосов
/ 17 апреля 2019

Я хочу инициализировать переменные экземпляра конструкторами, но получаю ошибку компиляции.

class Test{


    public static void main(String[] args){

        A a = new A(5,6);
        System.out.println(a.i);
    }
}

class A{
    int i, k;
    A(int a, int b){
        this.i=a;
        this.k=b;   
    }
}

class B extends A{
    int k;
    B(int a, int b, int c){
        this.k = a;
    }
}

Ошибка:

Test.java:26: error: constructor A in class A cannot be applied to given types;
        B(int a, int b, int c){
                              ^
  required: int,int
  found: no arguments
  reason: actual and formal argument lists differ in length
1 error

Ответы [ 2 ]

3 голосов
/ 17 апреля 2019

Вы пропускаете вызов super в B.Вы можете исправить это, используя

class B extends A{
    int k;
    B(int a, int b, int c){
        super(a,b);
        this.k = a;
    }
}

Также вы, вероятно, намеревались использовать this.k = c.

0 голосов
/ 17 апреля 2019

Что ж, ваша проблема в том, что вы не можете создать объект B, не создав сначала объект A. Если у вас был конструктор по умолчанию в A, вам не нужно вызывать super в B (хотя он будет вызываться автоматически).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...