Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

(The Person, Student, Employee, Faculty, and Staff classes) Design a class named

ID: 3644657 • Letter: #

Question

(The Person, Student, Employee, Faculty, and Staff classes) Design a class named Person and its two subclasses named Student and Employee. Make Faculty and Staff subclasses of Employee. A person has a name, address, phone number, and email address. A student has a class status (freshman, sophomore, junior, or senior). Define the status as a constant. An employee has an office, salary, and date-hired. Define a class named MyDate that contains the fields year, month, and day. A faculty member has office hours and a rank. A staff member has a title. Override the toString method in each class to display the class name and the person

Explanation / Answer

You'll have six class files (five classes and a class containing test program). You'll notice that I override the toString() method only in the Person class since all the other classes inherit from it so the same overridden toString() method will be available to those child classes as well. Class #1 - Person.java: public class Person { public String name; public String address; public String phone; public String email; public Person(String name, String address, String phone, String email) { this.name = name; this.address = address; this.phone = phone; this.email = email; } @Override public String toString() { return this.getClass().getName() + " " + name; } } Class #2 - Student.java: public class Student extends Person { // capitalize CLASS_STATUS variable is a typical Java convention // for variables that have been declared as final (aka: constant) public final String CLASS_STATUS; public Student(String name, String address, String phone, String email, String classStatus) { super(name, address, phone, email); CLASS_STATUS = classStatus; } } Class #3 - Employee.java: public class Employee extends Person { public String office; public double salary; public Employee(String name, String address, String phone, String email) { super(name, address, phone, email); } } Class #4 - Faculty.java: public class Faculty extends Employee { public String officeHours; public int rank; public Faculty(String name, String address, String phone, String email) { super(name, address, phone, email); } } Class #5 - Staff.java: public class Staff extends Employee { public String title; public Staff(String name, String address, String phone, String email) { super(name, address, phone, email); } } Class #6 - TestPerson (test program): public class TestPerson { public static void main(String[] args) { Person person = new Person("John Doe", "123 Somewhere", "415-555-1212", "johndoe@somewhere.com"); Person student = new Student("Mary Jane", "555 School Street", "650-555-1212", "mj@abc.com", "junior"); Person employee = new Employee("Tom Jones", "777 B Street", "408-888-9999", "tj@xyz.com"); Person faculty = new Faculty("Jill Johnson", "999 Park Ave", "925-222-3333", "jj@abcxyz.com"); Person staff = new Staff("Jack I. Box", "21 Jump Street", "707-212-1112", "jib@jack.com"); System.out.println(person.toString() + " "); System.out.println(student.toString() + " "); System.out.println(employee.toString() + " "); System.out.println(faculty.toString() + " "); System.out.println(staff.toString() + " "); } } Output from above TestPerson test class: Person John Doe Student Mary Jane Employee Tom Jones Faculty Jill Johnson Staff Jack I. Box