상속성(Inheritance)
- 상속이란 상위 클래스의 성질과 기능, 즉 멤버를 하위 클래스에게 내려주는 것을 뜻합니다.
- 기존에 만들어진 클래스와 비슷한 특성이나 성질을 가진 클래스를 만들어야 할 때 상속을 이용하여 개발 편의를 높일 수 있습니다.
- 클래스의 상속을 사용하는 이유는 다음과 같습니다.
- 하위 클래스에서 상위 클래스의 속성과 메서드를 다시 정의하지 않고도 사용 가능
- 상속을 통해 상위 클래스의 코드를 재사용하여, 보다 적은 양의 코드로 새로운 클래스를 생성
- 상속을 통해 객체를 다형적으로 표현 가능
- 자바에서 클래스 상속을 사용하는 방법은 아래와 같습니다.
- 9클래스의 선언부 뒤에 extends 예약어를 사용하여 상속을 표현합니다.
(자식 클래스를 먼저 선언하고 특성을 이어받을 부모 클래스를 선정하는 방식) - 자바에서는 하나의 자식클래스가 하나의 부모클래스를 상속하는 단일 상속(single inheritance)만을 허용합니다.
(하위 클래스가 2개 이상의 상위 클래스에게 상속 받을 때 발생하는 문제점을 방지하기 위함)
- 9클래스의 선언부 뒤에 extends 예약어를 사용하여 상속을 표현합니다.
상속 기본 문법
public class 자식클래스이름 extends 부모클래스이름 {
클래스 내용
}
상속 사용 예시
// 부모(상위) 클래스
public class Animal {
// 부모 클래스 멤버
public double height;
public double weight;
public int age;
public void move() {
System.out.println("움직이다");
}
}
// 자식(하위) 클래스
public class Human extends Animal {
// 자식 클래스의 멤버
public String name;
public String job
public double property;
}
// 실행 클래스
class ExtendsSample {
// Human 클래스에서 Animal 클래스의 속성을 사용 가능
Human.weight = 72;
human.move();
}
상속 관계를 사용해야 할 때의 기준
- 두 클래스의 관계가 "~은 ~이다" 관계일 경우 상속을 활용합니다.
[IS-A(Is a Relationship)]- 한 클래스보다 다른 클래스가 더 구체화되는 관계일 경우 상속 관계를 활용하는 것이 적절합니다.
- 한 클래스보다 다른 클래스가 더 구체화되는 관계일 경우 상속 관계를 활용하는 것이 적절합니다.
- 두 클래스의 관계가 "~은 ~을 포함하고 있다" 관계일 경우 참조를 활용합니다.
[HAS-A(Has a Relationship)]- 한 클래스가 다른 클래스를 소유하는 관계일 경우 포함 관계를 활용해서 표현하면 효과적입니다.
- 포함(Composite)이란 클래스의 멤버로 다른 클래스 타입의 참조 변수를 선언하는 것을 뜻합니다.
클래스 상속이 불가능한 경우
- 상속하고자 하는 클래스가 불변(final)로 선언되어있다면 상속이 불가능합니다.
'Programing Language > Java' 카테고리의 다른 글
[Java] 논리 연산자(Logical Operators) (0) | 2022.06.29 |
---|---|
[Java] 클래스 형 변환(Class Casting) (0) | 2022.06.28 |
[Java] 정적 & 불변 제어자(Static & Final Modifier) (0) | 2022.06.27 |
[Java] 접근 제어자(Access Modifier) (0) | 2022.06.27 |
[Java] 클래스의 캡슐화(Encapsulation) (0) | 2022.06.24 |