katelyn
katelyn

Reputation: 29

Calling superclass in main method

I've just learned about superclasses and subclasses and the homework is pretty simple: have 2 classes and a test class to call and print the attributes. Below is my code from all 3 classes. My question is, why isn't the department attributes printing in my main? Everything else prints just fine, I just can't get that last little bit to print. I think it has something to do with super...thank you in advance! Second computer course and I'm finally feeling I sort of get it, so that's improvement from the first class I took!


public class Employee {

    private String firstName;
    private String lastName;
    private int employeeID;
    private double salary;

    public Employee () {

        firstName = null;
        lastName = null;
        employeeID = 0;
        salary = 0.00;
    }

    public String getFirstName() {
        return firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public int getEmployeeID() {
        return employeeID;
    }

    public double getSalary() {
        return salary;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public void setEmployeeID(int employeeID) {
        this.employeeID = employeeID;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    public String employeeSummary () {
        String employeeSummary = "Employee's name is: " + getFirstName() + " " + getLastName() +
                    ". The employee's ID number is " + getEmployeeID() + 
                    ". The employee's salary is " + getSalary();
        System.out.println(employeeSummary);
        return employeeSummary;
    }

}


public class Manager extends Employee {

    private String departmentA;

    public Manager() {
        super();
        departmentA = null;
    }

    public String getDepartmentA() {
        return departmentA;
    }

    public void setDepartmentA(String departmentA) {
        this.departmentA = departmentA;
    }

    public void EmployeeSummary() {
        super.employeeSummary();
        System.out.println("The employee's department is " + departmentA);
    }
}


public class ManagerDerivation {

    public static void main(String[] args) {
        Manager person = new Manager();

        person.setFirstName("Ron");
        person.setLastName("Weasley");
        person.setEmployeeID(2345);
        person.setSalary(65000.00);
        person.setDepartmentA("Department of Magical Law Enforcement");
        person.employeeSummary();

    return;

    }

}

Upvotes: 0

Views: 269

Answers (2)

Bart Hofma
Bart Hofma

Reputation: 644

There is some spelling (employeeSummary vs. EmployeeSummary) mistakes and return types dont match, in Employee should be

public void employeeSummary () {
    String employeeSummary = "Employee's name is: " + getFirstName() + " " + 
    getLastName() +
                ". The employee's ID number is " + getEmployeeID() + 
                ". The employee's salary is " + getSalary();
    System.out.println(employeeSummary);   
}

then in Manager

public void employeeSummary() {
    super.employeeSummary();
    System.out.println("The employee's department is " + departmentA);
}

Upvotes: 0

Mark Peters
Mark Peters

Reputation: 81054

Method names are case sensitive. EmployeeSummary() does not override employeeSummary() because it uses a different name.

To avoid mistakes like this, always include the @Override annotation on overridden methods. If you include that annotation and make a mistake in the method signature, compilation will fail.

Note also that your return types for the two methods are different (String and void). Overridden methods must have compatible return types.

Upvotes: 1

Related Questions