티스토리 뷰
(메서드)오버로딩(overloading)
- 한 클래스 안에서 같은 이름의 메서드를 여러 개 정의하는 것
더보기
한 클래스 안에서 같은 이름의 메서드를 여러 개 정의하는 것
void println()
void println(boolean x)
void println(char x)
void println(char[] x)
void println(double x)
void println(float x)
void println(int x)
void println(long x)
void println(Object x)
void println(String x)
오버로딩 조건
- 메서드 이름이 같아야 한다.
- 매개변수의 타입 또는 개수가 달라야 한다.
- 반환 타입은 영향 없다.
더보기
1. 메서드 이름이 같아야 한다.
2. 매개변수의 타입 또는 개수가 달라야 한다.
// 보기 1
int add(int a, int b) { return a + b; }
int add(int x, int y) { return x + y; } // 오버로딩 x
// 보기 3
long add(int a, long b) { return a + b; }
long add(long a, int b) { return a + b; } // Ok.
3. 반환 타입은 영향 없다.
// 보기 2
int add(int a, int b) { return a + b; }
long add(int a, int b) { return (long)a + b; } // 오버로딩 x
예제6-10
- 코드
- 오버로딩의 좋은 예 : 매개변수는 다르지만 같은 의미의 기능 수행
더보기
오버로딩의 좋은 예 : 매개변수는 다르지만 같은 의미의 기능 수행
class MyMath3 {
int add(int a, int b) {
System.out.print("int add(int a, int b) - ");
return a + b;
}
long add(long a, long b) {
System.out.print("long add(long a, long b) - ");
return a + b;
}
int add(int[] a) { // 배열의 모든 요소의 합을 결과로 돌려준다.
System.out.print("int add(int[] a) - ");
int result = 0;
for(int i = 0; i < a.length; i++) {
result += a[i];
}
return result;
}
}
오버라이딩
- 조상클래스로부터 상속받은 메서드 구현부를 자신에 맞게 변경하는 것
더보기

조상클래스로부터 상속받은 메서드 구현부를 자신에 맞게 변경하는 것

예제OverrideTest
- 오버라이딩 실습
- Object클래스의 toString() 오버라이딩 실습
- 매개변수가 있는 생성자 실습
더보기
1. 오버라이딩 실습
2. Object클래스의 toString() 오버라이딩 실습
3. 매개변수가 있는 생성자 실습
오버라이딩의 조건
- 1. 선언부가 조상클래스의 메서드와 일치해야 한다.(① 반환타입 ② 메서드이름 ③ 매개변수목록)
- 2. 접근 제어자를 조상클래스의 메서드보다 좁은 범위로 변경할 수 없다.
- 3. 예외는 조상 클래스의 메서드보다 많이 선언할 수 없다.
- 4. 인스턴스메서드를 static메서드로 또는 그 반대로 변경할 수 없다.
더보기
1. 선언부가 조상클래스의 메서드와 일치해야 한다.
- 반환타입
- 메서드이름
- 매개변수목록
2. 접근 제어자를 조상클래스의 메서드보다 좁은 범위로 변경할 수 없다.
- public > protected > (default) > private
3. 예외는 조상 클래스의 메서드보다 많이 선언할 수 없다.
class Parent {
void parentMethod() throws IOException, SQLException {
...
}
}
class Child extends Parents {
void ParentMethod() throws IOException {
...
}
...
}
오버로딩 vs 오버라이딩
- 오버로딩 - 기존에 없는 새로운 메서드를 정의하는 것(new)
- 오버라이딩 - 상속 받은 메서드의 내용을 변경하는 것(modify)
더보기
class Parent {
void parentMethod() {}
}
class Child extends Parent {
void parentMethod() {} // 오버라이딩
void parentMethod(int i) {} // 오버로딩
void childMethod() {} // 메서드 정의
void childMethod(int i) {} // 오버로딩
void childMethod() {} // 에러. 중복정의 되었음 already defined in Child
}
🍪
📄 - 객체지향개념 암기노트 바로가기
'Java의 정석_기초편' 카테고리의 다른 글
변수의 초기화 (0) | 2022.10.13 |
---|---|
생성자(constructor) (0) | 2022.10.12 |
변수와 메서드 (0) | 2022.10.11 |
클래스와 객체 (0) | 2022.10.10 |
객체지향 언어 (0) | 2022.10.10 |
댓글
공지사항