Попытка вызвать конструктор подкласса в main - PullRequest
1 голос
/ 20 мая 2019

Я пишу программу на Java и сталкиваюсь с этой проблемой.

Я создал абстрактный суперкласс Customer и подкласс RegisteredCustomer и, конечно, основной класс. Я не могу найти способ использовать конструктор RegisteredCustomer в основном.

Сообщение The method RegisteredCustomer(String, long, String, String) is undefined for the type RegisteredCustomer, хотя я сделал точный конструктор с этими параметрами в RegisteredCustomer.

Я пытался RegisteredCustomer.RegisteredCustomer(fn , tel , adr , em); и Customer.RegisteredCustomer.RegisteredCustomer(fn , tel , adr , em);

ЗАРЕГИСТРИРОВАННЫЙCUSTOMER

public class RegisteredCustomer extends Customer {

    private static int count = 0;

    private int id;
    private String email;
    private String  password;

    public RegisteredCustomer(String fullName, long telephone, String adress, String email) {
        super(fullName, telephone, adress);
        this.id = ++ count;
        this.email = email;
        Customer.getCustomers().add(Customer.getCustomers().size() , this);
    }

MAIN

RegisteredCustomer.RegisteredCustomer(fn , tel , adr , em);

Ответы [ 3 ]

3 голосов
/ 20 мая 2019

С помощью RegisteredCustomer.RegisteredCustomer(fn , tel , adr , em); вы пытаетесь вызвать статический метод RegisteredCustomer класса RegisteredCustomer, который не существует, следовательно, он сообщает вам, что метод не определен.

Приведенный ниже код является примером метода, который вы пытаетесь вызвать.

public class RegisteredCustomer {

    ...

    public static void RegisteredCustomer(String fullName, long telephone,
            String adress, String email) {
        ...
    }
}

Правильный способ создания экземпляра RegisteredCustomer заключается в вызове:

new RegisteredCustomer(fn , tel , adr , em);
1 голос
/ 20 мая 2019

Я не уверен, но попробуйте создать демонстрационный класс и написать там:

RegisteredCustomer rc = new RegisteredCustomer(fn, tel, adr, em);

И тогда вы сможете изменить свой объект там.

0 голосов
/ 20 мая 2019

Кажется, есть синтаксическая ошибка в способе инициализации объекта в Java. Вот один из способов написать это,

public class TestClass {
    public static void main(String[] args) {
        RgisteredCustomer rc = new RgisteredCustomer("John D", 9175556671L, "NYC", "john.d@gmail.com"); //This is how the base and super class constructors are called
        System.out.println(rc);
    }
}

class Customer {
    private String fullName;
    long telephone;
    String address;
    Customer(String fullName, long telephone, String address) {
        this.fullName = fullName;
        this.telephone = telephone;
        this.address = address;
    }
    public String toString() {
        return fullName + " " + telephone + " " + address;
    }
}

class RgisteredCustomer extends Customer {
    private static int count = 0;
    private int id;
    private String email;
    private String  password;

    public RgisteredCustomer(String fullName, long telephone, String adress, String email) {
        super(fullName, telephone, adress);
        this.id = ++ count;
        this.email = email;
        //Customer.getCustomers().add(Customer.getCustomers().size() , this);
    }
    public String toString() {
        return super.toString() + " " + email + " " + password;
    }
}

В Java это RegisteredCustomer.RegisteredCustomer (fn, tel, adr, em) /Customer.RegisteredCustomer.RegisteredCustomer (fn, tel, adr, em) будет означать вызов статического метода.

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