코딩항해기
[JAVA] 상속 (+super, super()) 본문
상속 (Inheritance)
기존에 선언된 클래스의 멤버(생성자는 제외)를 새롭게 만들 클래스에서 사용하고 싶을 때, 상속을 받아 새로운 기능만 추가 할 수 있도록 해준다. 여러 클래스 선언 시 멤버가 겹치는 경우, 부모 클래스를 먼저 선언하여 공통멤버를 자식 클래스들에게 상속하는 방식으로 사용할 수 있다. 상속은 단일상속만 할 수 있다.
(자식 클래스는 하나의 부모 클래스만 가질 수 있다.)
상속문법
class Parent{
//부모클래스의 멤버(필드, 메소드)
}
class 슈퍼클래스{
//슈퍼클래스 멤버
}
class child extends Parent {
//부모클래스의 멤버
//자식클래스의 멤버
}
class 서브클래스 extends 슈퍼클래스 {
//슈퍼클래스 멤버
//서브클래스 멤버
}
- Parents 부모클래스, 슈퍼클래스, 기반클래스, 상위클래스 (상속을 해주는 클래스)
- Child 자식클래스, 서브클래스, 파생클래스, 하위클래스 (상속을 받는 클래스)
super, super()
super
부모의 참조값. 부모의 멤버에 접근할 때 사용한다. (부모의 this)
super()
부모 생성자 자식 클래스 타입의 객체로 부모클래스의 멤버에 접근할 수 있다.
객체를 만들 때 자식 생성자만 호출하기 때문에 자식 멤버만 메모리에 할당된다고 생각 할 수 있지만,
자식 생성자는 항상 부모 생성자를 호출한다.
따라서 자식의 필드를 초기화 할때 부모 필드도 초기화하는 것을 의미한다.
즉, 자식 객체를 생성하게 되면 부모 객체도 생성되게 된다. (부모 객체가 먼저 생성된다)
부모 생성자를 호출하는 방법은 super()를 사용하며, 작성하지 않더라도 컴파일러가 자동으로 작성해준다.
상속 없이 super나, super()를 사용하게 되면 모든 클래스의 최상위 부모인 Object를 가르키게 된다.
'JAVA' 카테고리의 다른 글
[JAVA] 예외처리 try-catch (+예외던지기 throw, throws) (0) | 2024.07.24 |
---|---|
[JAVA] 내부클래스, 익명클래스 (0) | 2024.07.23 |
[JAVA] 생성자 (+this, this()) (0) | 2024.07.20 |
[JAVA] 배열 (+index, Arrays) (1) | 2024.07.17 |
[JAVA] 컬렉션 프레임워크 (+Generic, Iterator) (0) | 2024.07.15 |