본문 바로가기
Study

[Java] 객체 지향 프로그래밍(Object-Oriented Programming, OOP) - 상속 (2)

by jisayDeveloper 2023. 10. 16.
728x90
반응형
SMALL

추상화에 이어서 상속을 알아보도록 하겠습니다.

https://jisaydeveloper.tistory.com/25

 

[Java] 객체 지향 프로그래밍(Object-Oriented Programming, OOP) - 추상화 (1)

Java를 배우는 데에 있어서 객체 지향 프로그래밍은 너무나도 중요한 개념입니다. 쉽게 이해할 수 있도록 포스팅하겠습니다. 정의 객체 지향 프로그래밍(영어: Object-Oriented Programming, OOP)은 컴퓨터

jisaydeveloper.tistory.com

 

정의

객체 지향 프로그래밍(OOP)에서, 상속(inheritance)은 객체들 간의 관계를 구축하는 방법이다. 클래스로 객체가 정의되는 고전 상속에서, 클래스는 기반 클래스, 슈퍼클래스, 또는 부모 클래스 등의 기존의 클래스로부터 속성과 동작을 상속받을 수 있다. 그 결과로 생기는 클래스를 파생 클래스, 서브클래스, 또는 자식 클래스라고 한다. 상속을 통한 클래스들의 관계는 계층을 형성한다. 프로토타입 기반 프로그래밍에서는, 객체가 클래스를 따로 정의할 필요 없이 다른 객체로부터 직접 정의될 수 있다. 이러한 특징을 차등 상속이라고 한다.

출처 : 위키백과

상속

  • 클래스의 속성과 행위를 하위 클래스에 물려주거나 하위 클래스가 상위 클래스의 속성과 행위를 물려받는 것을 말한다
  • 새로운 클래스가 기존의 클래스의 데이터와 연산을 이용할 수 있게 하는 기능

상속을 쓰는 이유는 기존 클래스(부모 클래스 또는 슈퍼 클래스)의 특성과 동작을 새로운 클래스(자식 클래스 또는 서브 클래스)에서 재사용하거나 확장하기 때문에 코드의 재사용을 줄일 수 있고 메서드를 자유롭게 추가, 사용 할 수 있습니다.

 

코드로 예를 들어 보겠습니다.

// 동물을 나타내는 부모 클래스
class Animal {
    public String name;
    public String species;

    public Animal(String name, String species) {
        this.name = name;
        this.species = species;
    }

    public void makeSound() {
        System.out.println(name + "은(는) 소리를 내지 않습니다.");
    }
}

Animal 클래스를 만듭니다. 이 클래스를 상속해서 부모 클래스로 사용할 겁니다.

 

// 고양이를 나타내는 자식 클래스, Animal 클래스를 상속받음
class Cat extends Animal {
    private String breed;

    public Cat(String name, String breed) {
        super(name, "고양이"); // 부모 클래스 생성자 호출
        this.breed = breed;
    }

    // 부모 클래스의 메서드를 오버라이딩 (재정의)
    public void makeSound() {
        System.out.println(name + "은(는) 야옹이 소리를 냅니다.");
    }
}

Cat 이라는 자식 클래스를 만들고 상속 키워드인 extends 를 통해 Animal를 상속 합니다.

이때 부모 클래스 생성자 호출은 'super()'를 사용합니다.

 

잠깐의 팁으로 super()를 사용하는 이유는

1. 자식 클래스의 생성자에서 부모 클래스의 생성자를 호출할 때.
2. 부모 클래스와 자식 클래스가 동일한 이름의 멤버 변수 또는 메서드를 가지고 있을 때, 부모 클래스의 멤버에 접근할 때.

 

public class Main {
    public static void main(String[] args) {
        Cat myCat = new Cat("야옹이", "페르시안");
        myCat.makeSound();
    }
}

메인 메서드에서 실행하면 

콘솔에 잘 출력되는 걸 볼 수 있습니다.

728x90
반응형
LIST