[JAVA] 07. OOP_Class 상속1 (25.08.06)

Rjhkki222·2025년 8월 6일

JAVA

목록 보기
1/13
post-thumbnail

7.1 상속 개념

상속의 개념

  • 상속은 다른 클래스 간의 관계를 설정하고 계층적 순서로 정보를 관리하며 코드를 재사용하는 데 도움됨
  • 새로운 클래스를 만들 때, 원하는 코드 중 일부가 포함된 클래스가 이미 있는 경우 기존 클래스에서 새 클래스를 파생(상속)시킬 수 있음
  • 기존 클래스의 멤버 변수와 메서드를 재사용할 수 있음

상속의 필요성

  • 상속: 기존 클래스의 기능을 사용하여 새 클래스를 만드는 기술
  • 한 클래스가 다른 클래스의 특징(멤버 메서드와 변수)을 가져오도록 하는 자바 객체지향 프로그래밍의
    필수적인 부분, 클래스 간의 관계를 더 잘 이해할 수 있고 프로그램 구조를 더욱 조직화할 수 있기 때문에
    코드의 가독성과 해석 가능성이 향상됨
  • 응용 프로그램의 유지·관리에 유용함

상속

  • 부모 클래스의 필드와 메소드를 자식 클래스에게 물려줄 수 있음.

부모 클래스 = 수펴 클래스, 기본 클래스

  • 다른 클래스에 멤버 요소(메서드와 변수)를 상속하는 클래스로 상위 클래스.

자식 클래스 = 서브 클래스, 파생 클래스

  • 다른 클래스의 멤버 요소를 상속받은 클래스로 하위 클래스
  • 자식 클래스는 부모 클래스의 모든 멤버 요소를 소유할 뿐만 아니라 그 밖에도 고유한 멤버 메서드와 변수를 추가할 수 있음.

7.2 클래스 상속

  • 자식 클래스를 선언할 때 어떤 부모로부터 상속받을 것인지를 결정하고, 부모 클래스를 다음과 같이 extends 뒤에 기술.
public class 자식클래스 extends 부모클래스 {
}
  • 다중 상속 허용하지 않음. extends 뒤에 하나의 부모 클래스만 상속 (cpp이 다중 상속을 허용하는것과 달리 java는 다중 상속을 지양함)


Is-A 관계 (is a relationship)

  • Is-A 관계는 상속을 나타냄.
  • '~는 ~이다' 라는 의미, 부모-자식 관계
  • extends, implements 키워드로 구현함.
  • 모든 클래스는 java.lang.Object의 하위 클래스이다.


7.3 상속의 유형

7.3.1 단일 상속

  • 클래스가 하나의 클래스에 의해서만 확장되는 것으로, 단일 수준 상속 이라고도 함.
  • 단일 부모 클래스에서 자식 클래스를 만들기 때문에 기본 클래스(부모 클래스)와 파생 클래스(자식 클래서)가 각각 하나 뿐임.
  • 자식 클래스는 기본 클래스로부터만 속성과 행동을 상속받고 부모 클래스의 모든 메서드와 변수에 접근할 수 있음.

7.3.2 다단계 상속

  • 클래스가 하나의 클래스에 상속하고, 상속받은 자식 클래스가 또 다른 클래스에 상속하는 것을 말함.

7.3.3 계층적 상속

  • 단일 부모 클래스의 값과 메서드를 여러 자식 클래스에 전달하는 것.
  • 한 클래스가 부모 클래스로 사용되고 나머지 클래스는 자식 클래스가 됨.

7.3.4 상속의 유형

1) 부모 생성자 호출

  • 자식 객체를 생성하면 부모 객체가 먼저 생성된 다음 자식 객체가 생성된다.
  • 부모 생성자는 자식 생성자의 맨 첫줄에 숨겨져 있는 super()에 의해 호출됨.
//자식생성자 선언
public 자식클래스(String model, String color){
        super(); // 생략 가능.
        this.model = model;
        this.color = color;
    }

2) super를 이용한 부모 클래스 참조

  • 자바의 상속에서 자식 클래스가 부모 클래스로부터 상속을 받으면 자식 클래스는 부모 클래스를 참조하기 위해 super 키워드를 사용
// super 키워드를 이용하여 부모 클래스의 멤버 요소에 접근.

class SuperCat {
	String name;
    void printInfo() {
    	System.out.println("부모 고양이입니다.");
    }
}

class SubKitten extends SuperCat {
	String name;
    void printInfo() {
    	System.out.println("아기 고양이입니다.");
    }
    void printDetail() {
    	super.printInfo();
        printInfo();
        super.name = "SuperCat";
        name = "SubKitten";
    }
}

profile
Hello World!🍀

0개의 댓글