반응형
Notice
Recent Posts
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Today
Total
관리 메뉴

오식랜드

[java] 상속 본문

dev-log/java

[java] 상속

개발하는 오식이 2023. 10. 16. 22:35
반응형

상속

: 특정 클래스가 가지는 일부 속성/행위를 다른 클래스에게 제공하기 위해 맺는 관계

  • 기존 클래스의 멤버를 그대로 이용 가능
  • 새로운 멤버 추가 가능
  • 기존 클래스의 멤버를 수정하여 사용하기 가능

⇒ 코드의 재사용 용이 (오류 최소화 / 유지보수 용이 / 개발 시간 단축)

예시

대학생 집단 + 고등학생 집당

⇒ “학생” 이라는 공통점

⇒ “학생” 클래스(공통적인 내용을 담는 클래스) 생성 후 대학생/고등학생에 상속

⇒ 대학생 / 고등학생 각각에 필요한 정보를 담는 멤버변수는 각자 선언 (대학생 → 전공 등 / 고등학생 → 학년, 반 등)

IS-A / HAS-A 관계

  1. IS-A : 상속
    • ~ 중 하나
    • “대학생”은 “학생” 중 하나
  2. HAS-A : 포함
    • ~ 을 갖는
    • 클래스 간 연관성이 낮아 상속으로 표현하지 않음
    • “학생 명부”는 “학생 정보”를 갖는다

상속의 특징

  • 모든 java의 class는 Object 클래스로부터 파생 ⇒ 모든 class의 조상 : Object 클래스
  • 단일 상속만 허용
  • 다중 상속은 interface 사용
  • 하위 클래스의 생성자 첫 줄에서 상위 클래스의 생성자 호출이 필요

Super 클래스

  • parent 클래스, base 클래스라고도 불린다.
  • 자신의 멤버를 상속해주는 클래스

Sub 클래스

  • child 클래스, derived 클래스라고도 불린다.
  • super 클래스로부터 멤버들을 상속받음
  • 상속받은 멤버는 자유롭게 사용 가는 (private 멤버는 직접 접근 불가 ⇒ super 클래스에서 access 메서드 제공 필요)
  • 메서드 오버라이딩(Overriding) 가능 : 상속받은 멤버 재정의 가능 ⇒ 재정의시 원래의 멤버는 은폐됨 (삭제가 아님)
  • 은폐된 내용은 super. 를 통해 불러올 수 있음

Sub클래스에서 정의

class ImSub extends SuperClassName {
	// super 클래스 생성자 선언
	// sub 클래스에서 추가될 멤버 선언
}
반응형

'dev-log > java' 카테고리의 다른 글

[java] 다형성 (Polymorphism)  (0) 2023.10.22
[java] 배열  (0) 2023.10.16
[java] 난수 생성  (0) 2023.10.16
[java] 패키지(Package)와 모듈(Module)  (0) 2023.10.16
[java] 생성자  (0) 2023.10.16
Comments