Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 공유락
- OOP
- 비즈니스 로직
- 마이크로서비스 아키텍처
- 스프링 부트
- springDataJpa
- Service 테스트
- 낙관락
- 비링크
- 테스트 코드
- 배열
- Controller 테스트
- do...while
- Java
- Repository 테스트
- 자바
- 스터디
- 스네이크 케이스
- DTO
- 자료구조
- 배타락
- @Version
- 파스칼 케이스
- jvm
- @Query
- Entity
- Array
- 디자인 패턴
- 원시 자료형
- 트랜잭션 락
Archives
- Today
- Total
menuhwang
[Java] 오버라이딩 (feat. 오버로딩) 본문
오버라이딩
상속관계에서 부모의 함수를 덮어쓰는 것
방법
- 오버라이딩할 메서드에 @Override 어노테이션을 붙여준다.
- 메서드 이름과 파라미터가 상속클래스의 메서드와 똑같이 작성해야만 한다.
@Override 어노테이션은 꼭 필요한가?
어노테이션을 안 붙인다고 에러가 발생하는 것은 아니지만, Override 어노테이션이 붙은 메서드가 상속 클래스에 존재하지 않는다면 컴파일에러가 발생한다.
@Override 어노테이션을 붙여 오버라이딩한 메서드임을 표시해줄 수 있고, 오버라이딩할 메서드가 상속 클래스에 존재하는지 확인할 수 있다.
예시
class Person {
public void greeting() {
System.out.println("안녕하세요");
}
}
class Programmer extends Person {
@Override
public void greeting() {
System.out.println("안녕하세요. 개발자입니다.");
}
@Override // 상속 클래스에 해당하는 메서드가 없어 컴파일에러가 발생한다.
public void hi() {
System.out.println("안녕하세요.");
}
}
public class Test {
public static void main(String[] args) {
Programmer programmer = new Programmer();
programmer.greeting(); // 안녕하세요. 개발자입니다.
}
}
오버로딩?
같은 함수 이름으로 파라미터의 데이터타입 또는 개수를 달리할 수 있다.
예시
// System.out.pringln() 오버로딩 예시
public void println() {
newLine();
}
public void println(boolean x) {
if (getClass() == PrintStream.class) {
writeln(String.valueOf(x));
} else {
synchronized (this) {
print(x);
newLine();
}
}
}
public void println(char x) {
if (getClass() == PrintStream.class) {
writeln(String.valueOf(x));
} else {
synchronized (this) {
print(x);
newLine();
}
}
}
// ...
'자바' 카테고리의 다른 글
[Java] JVM, 자바 실행부터 메모리 구조까지 (0) | 2022.12.11 |
---|---|
[Java] static 이란? (0) | 2022.09.30 |
[Java] 상속 (0) | 2022.09.26 |
[Java] 클래스와 객체 (1) | 2022.09.22 |
[Java] 배열 (0) | 2022.09.21 |
Comments