오버라이딩(Overriding)
자식이 부모한테 상속받은 메소드를 재작성하는 것
부모 클래스가 가진 기능을 자식 클래스가 재정의(추가,수정 등)하는 것
*부모클래스를 자식클래스가 호출하는 개념
조건
- 부모 메소드 이름과 같아야한다
- 매개변수 전부 동일
- 반환타입 동일 ↔ 오버로딩은 반환타입 영향x 매개변수만 영향
- 부모 메소드가 private이면, 그 메소드는 오버라이딩 불가
- final 메소드 오버라이딩 불가
*final 종단 의미. 변경 불가, 여기까지 끝
변수 외에도 메소드,클래스에도 가능(예약어)
상속불가 조건
부모가 final,private면 상속불가
[접근제한자] [예약어] 반환형 메소드명 ( [매개변수] ) {}
상속불가 조건 선언부라고 부름
(선언부가 부모자식 동일해야함)
상속불가 조건 선언부라고 부름
@Override
오버라이드 어노테이션
오버라이딩 했다는 표시 : 어노테이션(Annotation, 주석)
첫글자 대문자 아니면 빨간줄 에러남
@Override 붙이고 메소드명 변경하면 빨간줄 에러 발생
오버라이딩이 잘되고 있는지 검사해서 알려주는 것이 @Override
오버로딩(overloading)
한 클래스 내에서 같은 이름의 메소드를 여러 개 정의하는 것
조건
같은 메소드 이름 다른 매개변수 선언부(매개변수 타입, 개수, 순서)
메소드의 리턴타입은 오버로딩 조건과 관계 없음
상속에서 오버라이딩한 예
toString 작성하는 것도 오버라이딩 한 것
@Override
public String toString() {
return "Sub [x=" + x + ", y=" + y + ", a=" + a + "]";
}
'JAVA > 개념정리' 카테고리의 다른 글
[Java] 추상클래스(abstract) & 인터페이스(Interface) -- (0) | 2022.08.16 |
---|---|
[Java] 다형성(polymorphism) & 동적바인딩, 정적바인딩 -- (0) | 2022.08.09 |
[Java] 상속(Inheritance) (0) | 2022.08.07 |
[Java] 객체 배열(Object Array) (0) | 2022.08.06 |
[Java] 메소드(method) (0) | 2022.08.05 |