Member 13438455 Ответов: 1

Почему наследование на конструкторе не работает ? как я могу заставить его работать ?


Я новичок в java и пытаюсь работать над наследованием с помощью конструктора, но, похоже, это не работает.

Что я уже пробовал:

import java.io.*;
public class Person {
    String name;
    String address;
    String tel_no;
    String answer;
  
  public Person(String name, String address, String tel_no, String answer) {
    this.name = name;
    this.address = address;
    this.tel_no = tel_no;
    this.answer = answer;
  }
}
class Bar {
    public static void main(String[] args) throws IOException {
    BufferedReader k=new BufferedReader(new InputStreamReader
            (System.in));
  String answer = "no";
do{
    System.out.print("Please enter name: ");
    String name=k.readLine( );  // local variable
    System.out.print("Please enter address: ");
    String address=k.readLine( );
    System.out.print("Please enter phone number: " ); // to handle the end of line characters
    String tel_no =k.readLine( );
    System.out.print("Is your information Correct? ");
    answer=k.readLine( );
    // use local variables in constructor call
    Person person = new Person(name, address, tel_no, answer);    
} while(answer.equals("no"));
}

//subclass
import java.io.*;
public class Customer extends Person{
    String ID;
  
  public Customer(String ID) {
    this.ID = ID;
  }
}
class Geren {
    public static void main(String[] args) throws IOException {
    BufferedReader k=new BufferedReader(new InputStreamReader
            (System.in));
  String answer = "no";
    do{
    System.out.print("Please enter your ID number: ");
    String ID=k.readLine( );
    Customer cust = new Customer(ID);    
    } while(answer.equals("no"));
  }
}

Afzaal Ahmad Zeeshan

Что вы ожидаете от кода? Мы не можем отгадать и разгадать загадку.

1 Ответов

Рейтинг:
0

Richard Deeming

То Person класс имеет один конструктор, который ожидает четыре параметра - name, address, tel_no, и answer.

То Customer класс расширяет Person класс. Он имеет один конструктор, который принимает один параметр - ID - и не вызывает базовый конструктор.

Вы всегда должны вызывать конструктор суперкласса. В этом случае вам нужно будет добавить отсутствующий аргумент к Customer конструктор.

public class Customer extends Person{
    String ID;
    
    public Customer(String ID, String name, String address, String tel_no, String answer) {
        super(name, address, tel_no, answer);
        this.ID = ID;
    }
}

Использование ключевого слова super (учебники Java™ > изучение языка Java & gt; интерфейсы и наследование)[^]


CPallini

5.