import java.util.
ArrayList;
import java.util.List;
// Base abstract class
abstract class Person
private String name;
private int age;
public Person(String name, int age)
this.name = name;
this.age = age;
public abstract void displayDetails();
public String getName() {
return name;
public int getAge()
return age;
// Single Inheritance: Student class
class Student extends Person
{
private String studentId;
private String major;
public Student(String name, int age, String studentId, String major)
super(name, age);
this.studentId = studentId;
this.major = major;
@Override
public void displayDetails(
System.out.println("Student Name: " + getName() + ", Age: " + getAge() +
", ID: " + studentId + ", Major: " + major);
public void attendClass()
System.out.println(getName() + " is attending class in " + major);
public String getStudentId()
return studentId;
public String getMajor()
{
return major;
// Multilevel Inheritance: GraduateStudent class
class GraduateStudent extends Student
private String researchTopic;
public GraduateStudent(String name, int age, String studentId, String major, String researchTopic)
{
super(name, age, studentId, major);
this.researchTopic = researchTopic;
@Override
public void displayDetails()
System.out.println("Graduate Student Name: " + getName() + ", Age: " + getAge() +
", ID: " + getStudentId() + ", Major: " + getMajor() + ", Research Topic: " + researchTopic);
public void doResearch()
System.out.println(getName() + " is researching on: " + researchTopic);
}
// Hierarchical Inheritance: Teacher class
class Teacher extends Person
private String subject;
public Teacher(String name, int age, String subject)
super(name, age);
this.subject = subject;
@Override
public void displayDetails()
System.out.println("Teacher Name: " + getName() + ", Age: " + getAge() + ", Subject: " + subject);
public void teachClass()
System.out.println(getName() + " is teaching " + subject);
// Interfaces for Multiple Inheritance
interface Administrator
{
void manageStudentRecords();
interface Coordinator
void organizeEvents();
// Staff class implementing multiple inheritance
class Staff extends Person implements Administrator, Coordinator
private String department;
public Staff(String name, int age, String department)
super(name, age);
this.department = department;
@Override
public void displayDetails()
System.out.println("Staff Name: " + getName() + ", Age: " + getAge() + ", Department: " +
department);
@Override
public void manageStudentRecords()
System.out.println(getName() + " is managing student records in " + department);
}
@Override
public void organizeEvents()
System.out.println(getName() + " is organizing academic events in " + department);
// Custom Exception class
class AgeValidationException extends Exception
public AgeValidationException(String message)
super(message);
// Manager class to manage persons
class UniversityManager
private List<Person> persons;
public UniversityManager()
persons = new ArrayList<>();
}
public void addPerson(Person person)
persons.add(person);
System.out.println("Added " + person.getClass().getSimpleName() + ": " + person.getName());
public void showAllPersons()
System.out.println("\n--- All Persons in the University ---");
for (Person person : persons)
person.displayDetails();
if (person instanceof GraduateStudent)
((GraduateStudent) person).doResearch();
if (person instanceof Student)
((Student) person).attendClass();
if (person instanceof Teacher)
((Teacher) person).teachClass();
}
if (person instanceof Staff)
((Staff) person).manageStudentRecords();
((Staff) person).organizeEvents();
System.out.println();
public void validateAge(Person person) throws AgeValidationException
if (person.getAge() < 18)
throw new AgeValidationException(
"Age too young for university role: " + person.getName() + ", Age: " + person.getAge());
else{
System.out.println("Age validated for " + person.getName() + ": " + person.getAge());
// Main class
public class UniversityManagementSystem
{
public static void main(String[] args)
UniversityManager universityManager = new UniversityManager();
Try
Student student = new Student("Alice", 20, "S1001", "Computer Science");
GraduateStudent gradStudent = new GraduateStudent("Bob", 24, "G2001", "Electrical
Engineering", "AI in Robotics");
Teacher teacher = new Teacher("Dr. Smith", 45, "Mathematics");
Staff staff = new Staff("Mr. John", 38, "Administration");
universityManager.addPerson(student);
universityManager.addPerson(gradStudent);
universityManager.addPerson(teacher);
universityManager.addPerson(staff);
universityManager.validateAge(student);
universityManager.validateAge(gradStudent);
universityManager.validateAge(teacher);
universityManager.validateAge(staff);
// Trigger age validation exception
Student underageStudent = new Student("Tommy", 16, "S1002", "Physics");
universityManager.addPerson(underageStudent);
universityManager.validateAge(underageStudent); // Exception expected
} catch (AgeValidationException e)
{
System.err.println("Validation Error: " + e.getMessage());
} catch (Exception e)
System.err.println("Unexpected Error: " + e.getMessage());
} finally
System.out.println("\nFinal University Personnel:");
universityManager.showAllPersons();
System.out.println("University system execution completed.");