<상속을 사용하는 이유>
1) 클래스를 재사용 => 중복 코드↓
2) 유지 보수 시간 최소화 (부모 수정=> 모든 자식 클래스 수정)
부모 클래스 = 상위 클래스
자식 클래스 = 하위 클래스, 파생 클래스
class 자식클래스 extends 부모클래스 { //자식이 부모 결정
//필드
//생성자
//메소드
}
<상속의 특징>
1)여러 개의 부모 x
2)private 접근 제한은 상속 대상x
default 접근 제한은 같은 패키지만 가능.
super()는 부모의 기본 생성자를 호출
직접 자식 생성자를 선언하고 명시적으로 부모 생성자 호출시
반드시 자식 생성자 첫 줄에 super(매개값,...) 위치시켜야하고 그 매개값의 타입과 일치하는 부모 생성자를 호출.
<오버로딩(loading)>
과적하다. 많이 싣는다. 하나의 메소드 이름으로 여러 기능을 담는다 하여 붙여진 이름.
클래스 내에 같은 이름의 메소드나 생성자를 여러개 선언하는 것.
매개 변수의 타입, 개수, 순서 중 하나가 달라야 한다.
<오버라이딩(overriding, 메소드 재정의)>
부모에게서 상속받은 메소드의 내용이 자식 클래스에 맞지 않을 경우, 자식 클래스에서 동일한 메소드를 재정의 하는 것을 말한다.
-규칙-
1)부모의 메소드와 동일한 시그니처(리턴 타입, 메소드 이름, 매개 변수 목록)을 가짐.
2)접근 제한을 더 강하게 재정의x
public → default, private(x)
default, private → public(o)
3)새로운 예외(Exception)을 throws 할 수 없습니다.
부모 객체의 메소드는 숨겨져서 자식 객체의 메소드를 호출하면 오버라이딩된 자식 메소드가 호출된다.
But, 자식 클래스 내부에서 부모 클래스 메소드를 호출해야 한다면 super로 가능
class Parent{
void method1(){...}
void method2(){...}
}
class Child extends Parent{
void method2(){...} //오버라이딩
void method3(){
method2(); //오버라이딩된 호출
super. method2(); //부모 메소드 호출
}
}
<final>
클래스, 필드, 메소드를 선언시 사용 가능.
해당 선언이 최종 상태이고 절대 수정 불가.
1. final 클래스 : 부모 클래스 불가.
2. final 메소드 : 오버라이딩 불가.
3. final 필드 : 상수.
https://teamsparta.notion.site/201b2214d5204847b444595d317d5d61
테즈먼해 스터디 일지
스터디 일지 예시 보기
teamsparta.notion.site
'항해99 > 언어 스터디 [혼공자]' 카테고리의 다른 글
스터디 18일차 14-1입출력 스트림 (0) | 2022.10.21 |
---|---|
스터디 12일차 10-1 예외 클래스 (1) | 2022.10.12 |
스터디 2일차 06-2 필드 (0) | 2022.10.01 |