Subject.java:

package subjects;
 
public class Subject {
    private String subjectName;
    private int subjectCredits;
 
    public void setSubjectDetails(String name, int credits) {
        subjectName = name;
        subjectCredits = credits;
    }
 
    public void displaySubjectDetails() {
        System.out.println("Subject Name: " + subjectName);
        System.out.println("Subject Credits: " + subjectCredits);
    }
}

Department.java:

package institute;
 
public class Department {
    protected String departmentName;
 
    public String departmentCode;
 
    public void setDepartmentDetails(String name, String code) {
        departmentName = name;
        departmentCode = code;
    }
 
    public void displayDepartmentDetails() {
        System.out.println("Department Name: " + departmentName);
        System.out.println("Department Code: " + departmentCode);
    }
}

Course.java:

package institute;
 
public class Course extends Department {
    private String courseName;
    private int courseDuration;
 
    public void setCourseDetails(String name, int duration) {
        courseName = name;
        courseDuration = duration;
    }
 
    public void displayCourseDetails() {
        System.out.println("Course Name: " + courseName);
        System.out.println("Course Duration: " + courseDuration + " years");
        displayDepartmentDetails();
    }
}

ProtectedAndPublicDemo.java:

package demo;
 
import subjects.Subject;
import institute.Course;
 
public class ProtectedAndPublicDemo {
    public static void main(String[] args) {
        Course course = new Course();
        course.setDepartmentDetails("Computer Science", "CS101");
        course.setCourseDetails("Software Engineering", 4);
        
        System.out.println("Course Details:");
        course.displayCourseDetails();
        
        Subject subject = new Subject();
        subject.setSubjectDetails("Data Structures", 3);
        
        System.out.println("\nSubject Details:");
        subject.displaySubjectDetails();
        
        // Trying to access departmentName (protected) directly
        // Uncommenting the following line will give an error:
        // System.out.println(course.departmentName);  // Error: departmentName has protected access in Department
 
        // Trying to access private attributes of Subject directly
        // Uncommenting the following lines will give an error:
        // System.out.println(subject.subjectName);  // Error: subjectName has private access in Subject
        // System.out.println(subject.subjectCredits);  // Error: subjectCredits has private access in Subject
    }
}