오버로딩 (Overloading)
- 정의 : 같은 이름의 메소드(method) 를 여러 개 가지면서 매개변수의 유형과 다르도록 하는 기술
- 특징 :
1) 같은 이름의 함수를 여러 개 정의하고, 매개변수의 유형과 갯수를 다르게 하여 다양한 유형의 호출에 응답하게 한다.
2) 메소드(method) 의 리턴 타입이 다른 경우, 오버로딩(Overloading)이 성립 X (void는 return 없음)
3) '매개변수의 갯수' 혹은 '매개 변수의 자료형' 이 달라야 한다.
4) 매개변수의 이름 & 리턴 타입은 오버로딩(Overloading) 에 영향을 주지 못한다.
5) 매개변수에 따라 메소드(method) 의 이름을 다르게 할 필요가 없어 기억 및 코드 단순화에 용이
<예제>
public class OverloadingExample{
// view() 호출
void view() {
System.out.println("매개변수 없음");
}
// view에 매개변수로 int형 2개 호출
void view(int a, int b) {
System.out.println("매개변수 " + a + "와 " + b);
}
// view에 매개변수 double형 1개 호출
void view(String s) {
System.out.println("매개변수 " + s);
}
}
public class test {
public static void main(String[] args) {
// TODO Auto-generated method stub
// OverloadingExample 객체 생성
OverloadingExample ob = new OverloadingExample();
// view();
ob.view();
// view(int a, int b) 호출
ob.view(10, 20);
// view(String s) 호출
ob.view("J");
// view(String s) 호출
ob.view("New Years Day");
}
}
오버라이딩 (Overriding)
- 정의 : 상위 클래스가 가지고 있는 메소드를 하위 클래스가 재정의하여 사용
<예제>
public class Parent{
public String name;
public int age;
// print() 메소드
public void print() {
System.out.println("내 어머니 성함은 " + this.name + ", 연세는 " + this.age);
}
}
//Parent 상속
public class Child extends Parent{
String name_child;
//print() 메소드 오버라이딩
public void print() {
System.out.println("내 어머니 성함은 " + this.name + ", 연세는 " + this.age);
System.out.println("내 이름은 " + this.name_child + ", 어머니는 " + this.name + "입니다.");
}
}
public class Example {
public static void main(String[] args) {
// TODO Auto-generated method stub
// Child 객체 생성
Child chl = new Child();
// 변수 설정
chl.name = "MM";
chl.age = 50;
chl.name_child = "JJ";
// Overriding 된 Child 객체의 print() 호출
chl.print();
}
}
◆ 오버로딩과 오버라이딩 구분
구분 | 오버로딩(Overloading) | 오버라이딩(Overriding) |
메소드 이름 | 동일 | 동일 |
매개변수, 타입 | 다름 | 동일 |
리턴 타입 | 상관 없음 | 동일 |
'Java > Definition&Grammar' 카테고리의 다른 글
[Java] Getter, Setter 쓰는 이유 (0) | 2022.06.17 |
---|---|
[Java] JVM 구조(architecture) (0) | 2022.05.10 |
[Java] Interface (0) | 2021.03.24 |
[Java] 간단 문법 정리 (0) | 2021.03.15 |
댓글