JAVA를 잡아라!...
JAVA - 7. 상속 본문
#1 개념
▶ 상속(inheritance)
기존에 선언된 클래스의 필드를 새롭게 만들 클래스의 필드로 사용하고자 할 때
여러 클래스 선언 시 필드가 겹치는 경우,
부모 클래스를 먼저 선언하고
공통 필드를 묶어서 자식 클래스들에게 상속해준다.
- 부모 클래스, 상위 클래스, 슈퍼 클래스, 기반 클래스
- 자식 클래스, 하위 클래스, 서브 클래스, 파생 클래스
#2 문법
▶ 문법
class A {
A 필드
}
class B extends A {
A, B 필드
}
▶ extends : 상속의 키워드로 부모의 인자를 상속받은 자식은 계속 확장
▶ super() : 부모 생성자
: 자식 클래스 타입의 객체로 부모 필드에 접근할 수 있음
하지만 자식 생성자만 호출하기 때문에, 자식 필드만 메모리에 할당된다...
자식 생성자는 항상 부모 생성자를 호출하기 때문에 자식 생성자 호출 시 부모와 자식 필드 모두 메모리에 할당됨
이때 부모 생성자를 호출하는 방법은 super()를 사용!
super()를 작성하지 않더라도 컴파일러가 자동으로 작성해줌
#3 다형성(polymorphism)
▶ 오버로딩
- 함수명 동일
- 메소드 시그니쳐 다름
- 상속관계 X
- 함수명 중복정의 허용
- 함수가 n개(여러개)
▶ 오버라이딩(재정의)
- 함수명 동일
- 메소드 시그니쳐 같음
- 상속관계 O
- 메소드 재정의
- 메소드가 1개
부모 필드에서 선언한 메소드를 자식 필드에서 수정하고자할 때 재정의를 해야 함
이는 자식에서 부모 필드의 메소드와 동일한 이름으로 선언하는 것
부모 필드가 메모리에 먼저 할당되고 a라는 메소드가 먼저 올라간다고 하면,
자식 필드가 메모리에 할당되면서 재정의한 a메소드가 새롭게 만들어지는 것이 아닌
기존에 할당된 a a메소드 저장공간에 새롭게 재정의한 소스코드의 주소가 들어감
따라서 자식 객체로 a 메소드에 접근하면 자식 필드에서 재정의한 소스코드의 내용이 읽히게됨
'JAVA > JAVA_개념' 카테고리의 다른 글
JAVA - 9. 컬렉션 프레임워크_#1_배열리스트(ArrayList) (1) | 2023.12.08 |
---|---|
JAVA - 8. 추상클래스(abstract class) & 인터페이스(Interface) (2) | 2023.12.06 |
JAVA - 6. Class (1) | 2023.11.29 |
JAVA - 5. 함수 (1) | 2023.11.27 |
JAVA - 4. 배열 (1) | 2023.11.23 |