Java

java 상속 관계 구조 구현(학생 예제)

pepega 2021. 10. 21. 16:45

 

//Student.java

public class Student
{
    private String student_name; //학생 이름
    private int computer_grade; //컴퓨터 점수
    
    public Student() {}
    
    public Student(String student_name, int computer_grade) //생성자
    {
        this.student_name = student_name; //학생 이름
        this.computer_grade = computer_grade;  //컴퓨터 성적 설정
    }
    
    public String getName()
    {
        return this.student_name;
    }
    
    public int getAverage()
    {
        return this.computer_grade;
    }
    
    public void setGrade(int grade)
    {
        System.out.println("컴퓨터 점수 변경!");
        this.computer_grade = grade;
    }
}

 

//Science.java

public class Science extends Student
{
    private int science_grade; //과학 점수 입력
    
    public Science() {}
    
    public Science(String student_name, int computer_grade, int science_grade)
    {
        super(student_name, computer_grade); //부모 클래스 학생 이름, 컴퓨터성적 설정
        this.science_grade = science_grade; //과학 점수 입력
    }
    
    public String getName()
    {
        return super.getName();
    }
    
    public int getScienceGrade()
    {
        return this.science_grade;
    }
    
    public int getAverage()
    {
        return (super.getAverage() + science_grade) / 2;
    }
    
    public void setGrade(int grade)
    {
        System.out.println("과학 점수 변경!");
        this.science_grade = grade;
    }
}
//LiberalArts.java

public class LiberalArts extends Student
{
    private int liberalarts_grade; //과학 점수 입력
    
    public LiberalArts() {}
    
    public LiberalArts(String student_name, int computer_grade, int liberalarts_grade)
    {
        super(student_name, computer_grade); //부모 클래스, 학생 이름, 컴퓨터성적 설정
        this.liberalarts_grade = liberalarts_grade; //사회 점수 입력
    }
    
    public String getName()
    {
        return super.getName();
    }
    
    public int getScienceGrade()
    {
        return this.liberalarts_grade;
    }
    
    public int getAverage()
    {
        return (super.getAverage() + liberalarts_grade) / 2;
    }
    
    public void setGrade(int grade)
    {
        System.out.println("사회 점수 변경!");
        this.liberalarts_grade = grade;
    }
}
//StudentTest.java

public class StudentTest
{
    public static void main(String[] args)
    {
        Student[] studentList = new Student[5];
        
        studentList[0] = new Student("짱구", 25); //부모 클래스 호출
        studentList[1] = new Science("주희", 100, 50);  //자식 클래스 호출
        studentList[2] = new LiberalArts("김영주", 37, 61); //자식 클래스 호출
        studentList[3] = new Science("엽기동", 100, 100);
        studentList[4] = new LiberalArts("강석찬", 10, 20);
        
        for(int i = 0; i < studentList.length; i++) //배열 수 만큼 출력
        {
            System.out.println("이름 : " + studentList[i].getName()); //학생 이름 출력
            System.out.println("평균 : " + studentList[i].getAverage()); //현재 평균 출력
            studentList[i].setGrade(50); //과학, 사회, 컴퓨터 성적 변경!
            System.out.println("바뀐 평균 : " + studentList[i].getAverage()); //바뀐 평균 출력
            System.out.println();
        }
    }
}
javac Student.java
javac Science.java
javac LiberalArts.java
javac StudentTest.java

java StudentTest

이름 : 짱구
평균 : 25
컴퓨터 점수 변경!
바뀐 평균 : 50

이름 : 주희
평균 : 75
과학 점수 변경!
바뀐 평균 : 75

이름 : 김영주
평균 : 49
사회 점수 변경!
바뀐 평균 : 43

이름 : 엽기동
평균 : 100
과학 점수 변경!
바뀐 평균 : 75

이름 : 강석찬
평균 : 15
사회 점수 변경!
바뀐 평균 : 30

'Java' 카테고리의 다른 글

Overloading, Overriding (Java)  (0) 2021.10.21
java 클래스 구현, 상속, 자동차 예제  (0) 2021.10.21