안녕하세요.
https://blog.naver.com/sysysy0302 여니입니다 :)
오늘은 캡슐화, 추상화, 객체 지향 프로그래밍을 구성하는 중요한 특징 중 하나인 '상속(Inheritance)'에 대해 알아보겠습니다.
상속의 개념
상속이란 일반적으로 우리의 실생활에서도 쓰이는 용어입니다. 부모가 자식에게 재산을 물려주는 행위를 상속이라고 칭하는데요, Java에서도 상속은 비슷한 의미로 사용되고 있습니다.
상속(Inheritance)이란 부모클래스의 속성과 메소드를 자식클래스가 물려받아 그대로 사용 가능하게 해줍니다. 여기서 부모클래스는 superclass, 자식클래스를 subclass라고 부릅니다.
자식클래스는 부모클래스의 모든 멤버 변수와 메서드를 자신의 클래스에서 사용할 수 있습니다.
자식클래스에서 A라는 기능을 처리하는데 부모클래스에서 이미 똑같은 A라는 기능을 처리하고 있다면 자식클래스는 이슬 상속받아 그대로 사용할 수 있으며, 코드의 재사용성을 높이고 중복을 제거하여 생산성 향상과 보다 편하게 유지보수가 가능해집니다.
상속은 'extends' 키워드를 사용하며 상속의 형태는 다음과 같습니다.
class 부모클래스 {
// 부모 클래스의 멤버 변수와 메서드 정의
}
class 자식클래스 extends 부모클래스 {
// 자식 클래스의 멤버 변수와 메서드 정의
}
여기서 'extends' 키워드는 자식클래스가 부모클래스를 상속받음을 나타냅니다.
자식클래스는 부모클래스의 모든 public 및 protected 멤버를 사용할 수 있으며, 필요한 경우 오버라이딩하여 메서드를 재정의할 수 있습니다.
다음 코드를 통해 간단히 확인해봅시다.
'상속' 실습 예제
package com;
public class Inheritance {
public class ParentClass {
String parent = "I am parent";
public void Parent() {
System.out.println("I am Parent Method() in Parent Class");
}
}
public class ChildClass extends ParentClass { // ParentClass 상속받음
String child = "I am child";
public void Child() {
Parent(); // Parent메소드 호출 (실행1)
System.out.println(parent); //(실행2)
// 위와 같은 자식클래스는 부모클래스의 메소드를 호출하고, 부모 필드를 사용할 수 있다.
// 즉, 상속을 통해 자식클래스는 부모클래스의 속성을 그대로 물려받아 사용할 수 있다.
System.out.println("I am Child Method() in ChildClass"); // (실행3)
System.out.println(child); // (실행4)
}
}
public static void main(String[] args) {
Inheritance inheritance = new Inheritance();
ChildClass cc = inheritance.new ChildClass();
cc.Child();
}
}
<코드 출력>
코드 실행 순서
실행1. Parent() 메소드
ChildClass(자식클래스)의 Child() 메소드가 부모클래스(ParentClass)로 부터 상속받은 Parent()메소드를 호출합니다. Parent클래스는 "I am Parent Method() in Parent Class" 라는 메세지를 출력합니다.
실행2. parent 변수
자식클래스(ChildClass)는 부모클래스(ParentClass)로부터 상속받은 String타입의 parent 변수를 출력합니다.
실행3 ~ 4. ChildClass 출력 실행
ChildClass 본인의 메세지들을 순서대로 출력합니다.
"I am Child Method() in ChildClass"을 출력한 뒤, 자신의 String 타입의 child 변수를 출력합니다.
이렇게 상속을 통해 자식클래스는 부모클래스의 속성을 그대로 물려받아 사용할 수 있습니다.
정리
상속이란 부모클래스의 속성을 그대로 물려받아 사용할 수 있으며, 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것입니다.
☺ 장점 : 코드의 재사용성을 높이고 중복을 제거하여 생산성 향상과 보다 편하게 유지 보수가 가능해 집니다.
☺ 단점 : 굳이 단점이라고 하자면 상속받은 부모클래스를 변형 시 자식 클래스도 동일하게 변형되어 개별적으로 수정이 불가능하다는 점입니다.
하지만 Java에서 상속은 다중상속을 지원하지 않습니다. 이런 경우 Implements라는 것이 존재합니다.
Implements에 대해서는 다음 포스팅에서 설명하겠습니다 :)
'。*:・゚☆・゚schedule・゚*:・゚★・:*:・☆ *:・゚★ > 나의 면접 준비 자료 ✿˘◡˘✿' 카테고리의 다른 글
[취업/면접] 인스턴스란(Instance)? (클래스, 인스턴스, 객체 차이점) (0) | 2023.10.04 |
---|---|
[취업/면접] OOP란? (캡슐화, 추상화, 다형성, 상속성) (1) | 2023.10.03 |
[취업/면접] Java - 1부터 10까지 합계 구하기 (for 반복문으로 1부터 10까지 합계 계산하기) + static활용예시 (0) | 2023.10.03 |
[취업/면접] JSP란? (1) | 2023.10.02 |
[취업/면접] MVC패턴 방식 Model1과 Model2 차이점 (0) | 2023.10.01 |