Lab 20: Implementation inheritance

Last time you practiced interface inheritance. In this lab you will practice implementation inheritance. Work in pairs if you wish.

Problem

Design a class named Person and its two subclasses named Student and Employee. Make Faculty and Staff subclasses of Employee. A person has the following attributes: name, address, phone number, and email address. A student has: class year (freshman, sophomore, junior, or senior) and major. An employee has: office (room number) and salary. A faculty member has: department the faculty belongs to and rank (assistant, associate, or full). A staff member has: role the staff member plays. Override the toString method in each class to have it return an appropriate value.

Make sure you use the following appropriately:

Write a test program (e.g., main in UsePerson.java) that creates an instance of each of the classes: Person, Student, Employee, Faculty, and Staff, and invokes at least their toString methods. Be sure to use subtyping as much as possible.

This time, create an array of a certain type. I say "of a certain type" because I don't want to specify exactly what that type should be. What type you use would depend on what you want to do with the array. For example, you can do one of the following or something else that you come up with:

This time, add the usual: equals and compareTo if they make sense to be added. Make sure you did not add a getter and setter blindly for each field. You should add one of these only if it makes sense to add for each field.

This time, go back to each class and add at least one more attribute (field) to each class, and make appropriate changes in the subclasses to cope with the new attribute being added. I am guessing that you can come up with a field that makes sense to be added to each class. If you are absolutely sure that there is no way another field can be added to a class, so be it.

If you like, add two more classes: UndergradStudent and GradStudent as subclasses of Student and revise your program appropriately to deal with these additional classes. This part is not required, but you are strongly encouraged to try it.

Make sure that your program works correctly. If you have difficulties, please get help during the lab and also outside the lab if you did not finish it in the lab. Your instructor, TAs, and tutors are available to help.

When you are done...

When you are done with these, feel free to help others or leave.