728x90
공통점
- method 정의 시 이름을 같게 정의한다.
- 사용이 편리하다.
- 다형성 효과
Overriding(메서드 재정의)
- super class의 메서드를 sub class에서 재정의해서 사용하는 것
- 상속이 전제가 되어야 한다
- 상속받은 메서드와 전체적인 기능은 동일하지만 상세 구현이 다를 경우 기존의 상속 받은 메서드를 사용할 수 없으므로 새로운 메서드를 추가로 선언해야 한다.
- 규칙
- 메서드명, 인자, 리턴 타입을 동일하게 선언
- Access Modifier(접근 제한자)는 부모와 같거나 부모보다 넓은 범위로 정의
- 부모 메서드와 같은 예외를 던지거나 예외를 안던진다.
- 1.7 버전 : 상속 받은 메서드와 리턴 타입이 반드시 같아야 한다.
- 1.8 버전 : 상속 받은 메서드와 리턴 타입이 같거나 sub를 리턴한다.
Overloading
- 한 클래스 내에 메서드명이 같은 메서드들을 여러개 정의 하는 것. (즉, 메서드의 인자를 다르게 전달받고 싶을 경우 메서드의 이름을 같게 하고 파라미터 타입을 다르게 해서 사용하는 것)
- 상속이 아니어도 사용이 가능하다. 단, 인자가 달라야 한다.
- 같은 기능을 하는 메서드를 다양한 타입의 인자로 사용하고 싶을 경우
- 자바의 대표적인 overloading 함수는 println. (이클립스에서 ctrl + space bar를 통해 확인)
+ 클래스 내의 메인 메서드도 오버로드 할 수 있다.
- 규칙
- 파라미터의 개수를 다르게 선언
- 파라미터의 타입을 다르게 선언
- 리턴 타입은 상관 X
private static void sum(int a, int b){
System.out.println("a+b = ", a+b);
}
private static void sum(int a, int b, int c){ //파라미터의 개수를 다르게 선언.
System.out.println("a+b+c = ", a+b+c);
}
private static void sum(double a, double b){ //파라미터의 타입을 다르게 선언.
System.out.println("a+b = ", a+b);
}
728x90
'백엔드' 카테고리의 다른 글
[Javascript] Javascript Date → Java LocalDate/LocalDateTime 변환 오류 (0) | 2021.08.12 |
---|---|
[Error 해결법] Spring Boot - https to http redirect 에러 (0) | 2021.08.06 |
[CS] 고정소수점과 부동소수점 (0) | 2021.08.06 |
[Network] RestAPI, Restful이란? (1) | 2021.07.12 |
JPA란? (Spring Boot + JPA 환경설정 및 사용법) (0) | 2020.03.18 |
댓글