-
상속(Inheritance)의 개념
- 상속의 경우 속성을 상속하는 경우 보다는 메소드를 상속하기위해 많이 사용되며,
부모 클래스의 기능을 확장하는데 부모클래스를 수정하지 않고,
부모에 구현된 로직을 사용하면서 안정적으로 클래스의 기능을 확장 할 수 있는
기법을 제공한다.
- 상속을 계속적으로 하게 될 경우 가장 아래의 클래스는 부모로부터 많은 메소드를
상속 받음으로 매우 많은 기능을 사용할 수 있다.
- 무분별한 상속은 모바일 프로그램의 경우 심각한 속도 저하를 가져올 수 있다.
또한 유지보수 시에 Application 분석을 어렵게 할 수 있다.
- 상속은 한번에 하나의 클래스에서만 가능, C++의 경우는 2개이상의 클래스를
상속하는것이 가능하다.
- 형식: class 자식 Class(Sub Class) extends 부모 Class(parent Class, Super Class)
public class TestChild extends TestParent{ }
- 자식 클래스 객체를 생성시 부모 클래스의 객체가 먼저 생성 된다.
- Default Constructor(기본 생성자) 선언을 반드시 명시적으로 해야 잠재적인
에러를 예방할 수 있다.
- Object 클래스는 묵시적으로 상속이 선언되기 때문에 상속을 선언하지 않는다.
- 자식클래스는 부모의 위치를 알지만 부모는 자식의 위치를 알지 못한다.자바에서의 모든 클래스들의 부모는 Object라는 클래스이다.
즉, 임의의 클래스를 하나 생성했다고 하면 이 클래스는 Object클래스의 메소드를 사용할 수 있어야 한다.
이를 확인해보자.
프로그램 실행결과
그리고 아래는 Object클래스가 정의된 부분의 일부이다. 너무 길다.
지시 예약어 (extends)
상속에서의 지시 예약어는 extends이다.
extends를 이용해서 클래스 간의 상속 관계를 다음과 같이 정의한다.
1. 멤버 변수의 상속
프로그램 실행결과
소스 파일
2. 메소드의 상속
프로그램 실행결과
소스 파일
아래의 그림은 위의 상속관계를 UML로의 표현이다.
이너클래스의 메소드 사용하기
'JAVA > 상속' 카테고리의 다른 글
추상 클래스(abstract class) (0) 2020.10.11 메소드 내부 객체 변수(this,super), 생성자 호출 메소드 (0) 2020.10.11 상속 관계에서의 생성자 (0) 2020.10.10 객체 형변환 (0) 2020.10.10 Method Overriding (0) 2020.10.10