본문 바로가기

Java/Java Advance

자바에서의 클래스 상속과 일반화 관계

728x90
반응형

자바에서 클래스 상속과 일반화 관계를 활용하여 객체 지향 프로그래밍을 구현하는 방법에 대해 알아보겠습니다. 이를 통해 추상화 수준이 높은 클래스부터 구체적인 클래스까지 어떻게 모델링하는지 살펴보겠습니다.

클래스 상속과 일반화 관계

자바에서 클래스 상속은 부모 클래스로부터 필드와 메서드를 상속받아 새로운 클래스를 정의하는 메커니즘입니다. 이를 통해 부모 클래스의 특성을 자식 클래스에서 재사용하거나 확장할 수 있습니다. 일반화 관계는 객체 지향 프로그래밍(OOP)에서 중요한 개념 중 하나로, 클래스 간의 상속 관계를 나타냅니다.

Human 클래스

public class Human {
    String name;
    int age;

    public Human() {
        System.out.println("Human class default Constructor");
    }

    public Human(String str) {
        System.out.println("Human class의 name을 받는 Constructor");
        name = str;
    }

    public void setName(String str) {
        name = str;
    }

    public void setAge(int b) {
        age = b;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

 

- `Human` 클래스는 추상화 수준이 높은 일반적인 사항을 모델링합니다. 이름(`name`)과 나이(`age`)라는 속성을 가지고 있습니다.

Iam 클래스

public class Iam extends Human {
    String job;

    public Iam() {
        System.out.println("Iam class default Constructor");
    }

    public void setJob(String str) {
        job = str;
    }

    public String getJob() {
        return job;
    }

    public static void main(String args[]) {
        Iam iam = new Iam();

        iam.setName("홍길동");
        iam.setAge(100);
        iam.setJob("개발자");

        System.out.println("이름 : " + iam.getName());
        System.out.println("나이 : " + iam.getAge());
        System.out.println("직업 : " + iam.getJob());
    }
}

 

- `Iam` 클래스는 `Human` 클래스를 상속하며, `job`라는 추가적인 속성을 가집니다. 이 클래스는 `Human` 클래스의 속성과 메서드를 공유하면서 `job`을 추가로 가집니다.

Son 클래스

public class Son extends Iam {
    String school;

    public Son() {
        System.out.println("Son class default Constructor");
    }

    public void setSchool(String str) {
        school = str;
    }

    public String getSchool() {
        return school;
    }

    public static void main(String args[]) {
        Son son = new Son();

        son.setName("홍길동아들");
        son.setAge(50);
        son.setJob("개발자준비중");
        son.setSchool("아이티교육센터");

        System.out.println("이름 : " + son.getName());
        System.out.println("나이 : " + son.getAge());
        System.out.println("직업 : " + son.getJob());
        System.out.println("학교 : " + son.getSchool());
    }
}

 

- `Son` 클래스는 `Iam` 클래스를 상속하며, `school`이라는 추가적인 속성을 가집니다. 마찬가지로 `Human` 클래스의 속성과 메서드를 공유하면서 `job`과 `school`을 추가로 가집니다.

자바에서 클래스 상속과 일반화 관계를 활용하면 추상화 수준이 높은 일반적인 클래스에서부터 구체적인 클래스까지 다양한 클래스를 모델링할 수 있습니다. 이를 통해 객체 지향 프로그래밍의 핵심 개념 중 하나인 상속과 일반화를 이해하고 활용할 수 있습니다. 이러한 개념은 코드의 재사용성을 높이고 유지 보수성을 향상시키는 데 도움이 됩니다.

728x90
반응형