본문으로 바로가기

[Java] 상속 (Inheritance)

category Language/Java-backup 2022. 4. 3. 04:29
728x90
반응형
Java를 통해 객체지향 언어를 이해해보는 학습노트입니다

객체지향의 4가지 특징
원래 객체지향의 특징은 이 OOP 카테고리 맨 첫 번째로 포스팅되어야 했습니다. 이 4가지 특징에 대한 개념을 "상속"에 적는 이유는 저희는 벌써 2가지 특징 "추상화" ,"캡슐화"를 배웠습니다. 캡슐화는 4편에서 설명드렸지만 "추상화"는 직접적으로 언급한 적이 없습니다. 객체지향 코딩을 하면서 이미 "추상화"를 했기 때문입니다. "추상화"라는 것은 객체들의 공통적인 (속성과 기능)을 뽑아내는 것 정도라고 만 아시면 됩니다.  "다형성"은 개념이 복잡하므로 추후에 다루도록 하겠습니다 그렇다면 객체지향의 4가지 특징은 다음과 같이 정리 됩니다.
1. 추상화, Abstraction
2. 캡슐화, Encapsulation
3. 상속, Inheritance
4. 다형성, Polymorphism
 
상속, Inheritance
상속이라는 개념은 간단히 말하면 "기능을 물려받는다" 정도가 됩니다. 예를 들어 "A" 라는 클래스 기능을  "B"라는 클래스가 물려받게 되는 것입니다. 여기서 A는 'Super' 또는 '부모' 클래스 B는 'Sub' 또는 '자식' 클래스가 됩니다. 
 
즉, '코드의 재사용성' 이라는 것입니다.
 
 
상속의 키워드 'extends'
코드를 통해 이해해봅시다. Super 클래스와 Sub 클래스가 필요하니 다음과 같은 코드를 적어봅시다.
 
우선 'Super' 클래스 즉, 부모 클래스의 코드입니다.

 

멤버 변수는 "이름" 과 "나이", 생성자를 통해 이름과 나이를 받는 것을 알 수 있고, showInfo() 메서드로 멤버변수의 값을 출력하고 있습니다.

 

아래의 코드는 'Sub' 또는 자식 클래스이고 클래스명이 'SubPeople' 입니다 그리고 "extends" 키워드로 위의 SuperHuman 클래스를 "상속" 받는 것을 알 수 있습니다. 

 

 

자식 클래스인 SubPeople은 멤버변수로 gender를 받고 상속을 통해 물려받은 showInfo() 메소드를 오버라이딩 시키는 것을 알 수 있습니다.

 
생성자 함수를 보시면 처음 보는 super() 키워드가 보입니다. 이는 인스턴스화를 시킬 때 받은 두 개의 인자를 부모 클래스의 멤버변수에 넣어주는 것 입니다.
 
아래의 코드는 이렇게 SuperHuman 클래스를 상속받은 SubPeople 클래스를 인스턴스화 시킵니다. 이 과정에서 인자값을 넣어주고 있습니다.
 

 

결과는 다음과 같습니다.

 

*주의하실 점은 부모 클래스의 메소드에도 showInfo()가 있고 자식 클래스의 메소드에도 showInfo()가 있습니다. 즉 객체화를 시킨 상속받은 클래스에 메소드는 오버라이딩된( 자식클래스의 메소드) 메소드에 먼저 접근하는 것을 알 수 있습니다.

 

 

 

728x90
반응형

'Language > Java-backup' 카테고리의 다른 글

[Java] 캡슐화 (Encapsulation)  (0) 2022.04.03
[Java] 생성자 오버로딩  (0) 2022.04.03
[Java] 오버로딩 (OverLoading)  (0) 2022.04.03
[Java] 클래스  (0) 2022.04.03