Как передать методы в дочернем классе в основной класс в Java - PullRequest
0 голосов
/ 22 января 2019

У меня есть проблема в моем коде. У меня есть 3 класса Основной класс, Родительский класс, Детский класс.

Я немного запутался с конструктором. Я сделал родительский конструктор и дочерний конструктор.

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

Кто-нибудь может мне помочь в этом ??

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */


MAIN CLASS
public class EmployeeInformation {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        //
        Scanner sc = new Scanner (System.in);
System.out.println("");
String Name = sc.next();

        Employee myemp = new Employee(Name);
    myemp.getName();

    myemp.addEmployee();
    String name = sc.next();


    }


}

PARENT CLASS
package employeeinformation;
public class Person {
    private String name;
    private String ID;
    private String address;
    private String gender;
public Person(String Name , String ID, String address, String gender)
{
    this.name = Name;
    this.ID = ID;
    this.address = address;
    this.gender = gender;
}

    /**
     * @return the name
     */
    public String getName() {
        return name;
    }

    /**
     * @param name the name to set
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * @return the ID
     */
    public String getID() {
        return ID;
    }

    /**
     * @param ID the ID to set
     */
    public void setID(String ID) {
        this.ID = ID;
    }

    /**
     * @return the address
     */
    public String getAddress() {
        return address;
    }

    /**
     * @param address the address to set
     */
    public void setAddress(String address) {
        this.address = address;
    }

    /**
     * @return the gender
     */
    public String getGender() {
        return gender;
    }

    /**
     * @param gender the gender to set
     */
    public void setGender(String gender) {
        this.gender = gender;
    }

}

CHILD CLASS

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package employeeinformation;

import java.util.ArrayList;
import java.util.Scanner;

/**
 *
 * @author salomon
 */
public class Employee extends Person {
Scanner sc = new Scanner (System.in);
    private String employmentType;
    private String empID;
    ArrayList<Employee> el = new ArrayList<Employee>();


 Employee(String Name, String ID, String address, String gender, String employmentType, String empID) {
        super(Name, ID, address, gender);
        setEmpID(empID);
        setEmploymentType(employmentType);

    }



    /**
     * @return the employmentType
     */
    public String getEmploymentType() {
        return employmentType;
    }

    /**
     * @param employmentType the employmentType to set
     */
    public void setEmploymentType(String employmentType) {
        this.employmentType = employmentType;
    }

    /**
     * @return the accesscard
     */


 public void addEmployee()å
{
 System.out.println("Enter your Full Name");
 String name = sc.next();
 System.out.println("Enter your NRIC/ID");
 String ID = sc.next();
 System.out.println("Enter your Address");
 String address = sc.next();
 System.out.println("Enter your Gender");
 String gender = sc.next();
 System.out.println("Enter your Employment Type");
 String employmentType = sc.next();
 System.out.println("Enter your Employment ID");
 String employmentID = sc.next();


Employee empobj;
empobj = new Employee(name, ID, address, gender, employmentType, getEmpID());
el.add(empobj);
System.out.println(el);
}

 @Override
    public String toString() {
        return "Employee Details " + getName() + getAddress() + getID() + getGender(); //To change body of generated methods, choose Tools | Templates.
    }

    /**
     * @return the empID
     */
    public String getEmpID() {
        return empID;
    }

    /**
     * @param empID the empID to set
     */
    public void setEmpID(String empID) {
        this.empID = empID;
    }

    /**
     * @param empID the empID to set
     */

}

Ответы [ 3 ]

0 голосов
/ 22 января 2019

Есть пример на pass objects-vars возможно, это может помочь вам.

Но в заголовке вы не передаете методы (вызываете их и получаете результат), вы передаете объекты или переменные другим классам (экземплярам).

0 голосов
/ 22 января 2019

В вашем методе main вы используете конструктор ниже для создания нового объекта.

Employee myemp = new Employee(Name);

Но у вас нет такого конструктора в вашем классе Employee. Попробуйте добавить конструктор ниже к вашему классу Employee

 Employee(String name){
    super(name);
    setName(name);
}

и ниже вам конструктор Person класса

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

Обратите внимание, что вы можете использовать конструктор, объявленный только в классе объекта. В противном случае вы можете попытаться создать пустой объект и установить атрибуты для отдельных элементов с помощью сеттеров, как показано ниже в вашем основном методе.

Employee myemp = new Employee();
myemp.setName(name);

Чтобы это работало, в вашем классе Employee должен быть пустой конструктор, как показано ниже

Employee(){}
0 голосов
/ 22 января 2019

Измените код Employee myemp = new Employee(Name); на Employee myemp = new Employee(Name , address, gender, employmentType, empID); Укажите адрес, пол и т. Д. Для конструктора Employee.

(Или)

Создайте один аргумент.конструктор в классах лиц и сотрудников.

public Employee(String name){
  super(name);
  this.name = name;
}
...