Конструктор в классе не может применяться к типам - PullRequest
0 голосов
/ 11 ноября 2018

Я пытаюсь создать несколько классов, которые наследуются от одного и того же суперкласса. Мой первый класс работал отлично. Когда я попытался второй, я получил сообщение об ошибке, которое я не видел прежде. Я новичок в этом, поэтому я не уверен, как решить проблему.

Это класс

class Employee extends Person{
      double salary;
      private java.util.Date dateCreated;


      public Employee(){
      }

      public Employee(String name, String address, String phone_number, double salary){
         super(name, address, phone_number);
         this.salary = salary;
      }

      public String getDate(){
         java.util.Date date = new java.util.Date();
         return date.toString();
      }

      public double getSalary(){
         return this.salary;
      }

      public String toString(){
         return("Employee object:\n" + super.toString() + "\n" + "Salary:\t$" + getSalary() + "\n" + "Date Hired: " + getDate());
      }
   }

Я пытаюсь вызвать метод таким образом

Employee employee = new Employee (name, address, number, salary);
System.out.println(employee.toString());

Я получаю это сообщение об ошибке:

testPerson.java:21: error: constructor Employee in class Employee cannot be applied to given types;
Employee employee = new Employee (name, address, number, salary);
                    ^
  required: no arguments
  found: String,String,String,double
  reason: actual and formal argument lists differ in length
1 error

Вот класс TestPerson

public class TestPerson{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        System.out.println("Please enter your name: ");
        String name = input.next();
        System.out.println("Please enter your address: ");
        String address = input.next();
        System.out.println("Please enter your phone number: ");
        String number = input.next();
        System.out.println("Please enter your yearly salary: ");
        double salary = input.nextDouble();
        Employee employee = new Employee (name, address, number, salary);
        System.out.println(employee.toString());
    }
}

Это родительский класс, чтобы очистить его. Я могу сделать что-то не так, что я не поймаю.

import java.util.*;
public class Person{
   private String name;
   private String address;
   private String phone_number;

   public Person(){
   }

   public Person(String name, String address, String phone_number){
      this.name = name;
      this.address = address;
      this.phone_number = phone_number;
   }

   public String getName(){
      return this.name;
   }

   public String getAddress(){
      return this.address;
   }

   public String getPhone(){
      return this.phone_number;
   }

   public String toString(){
      return ("Person object:\n" + "Name:\t\t" + getName() + "\n" + "Address:\t" + getAddress() + "\n" + "Phone#:\t" + getPhone());
   }

}

1 Ответ

0 голосов
/ 11 ноября 2018

Я слежу за состоянием этой проблемы с самого начала, и я нашел ее действительно интересной, поэтому я скопировал ваш код и протестировал его локально, и удивился, как и ожидал ... ни одной ошибки не найдено.Кажется, ваш компилятор пытается использовать конструктор без аргументов вместо второго, который вы дали.Вы должны проверить свой код, если это действительно тот класс Employee, который используется в testPerson.java.

...