오버로딩 (Overloading)
오버로딩은 동일 이름의 메서드를 매개변수만 다르게 하여 여러 개 정의할 수 있는 기능이다.
특징
- 메서드 이름이 같아야 한다.
- 매개 변수 개수가 달라야 한다.
- 매개변수 개수가 같을 경우 데이터 타입이 달라야 한다.
- 반환형은 같거나 달라도 된다.
public class A {
public void fn() {
System.out.println("없음"); // 매개변수가 없고 반환 값도 없는 fn메서드
}
public void fn(int i) {
System.out.println(i);
}
public void fn(double d) {
System.out.println(d);
}
public int fn(int a, int b) {
return a+b;
}
}
public class MainTest {
public static void main(String arg[]) {
A a = new A(); // A클래스의 객체 a를 생성한다.
a.fn(); // 매개변수, 반환 값이 없는 fn메서드 호출
a.fn(7); // 하나의 정수형 매개변수를 갖고 반환 값이 없는 fn 메서드 호출
a.fn(10.0); // 하나의 실수형 매개변수를 갖고 반환 값이 없는 fn 메서드 호출
System.out.println(a.fn(2, 3)); // 두 개의 매개변수를 갖고 반환 값을 갖는 fn메서드 호출
}
}
오버라이딩 (Overriding)
오버라이딩은 하위클래스에서 상위클래서 메서드를 재정의할 수 있는 기능이다.
특징
- 오버라이드하고자 하는 메서드가 상위클래스에 존재하여야 한다.
- 메서드 이름은 같아야 한다.
- 메서드 매개변수 개수, 데이터 타입이 같아야 한다.
- 메서드 반환형이 같아야 한다.
예제
public class A { //부모클래스 A를 선언한다.
public void fn() { //fn 메서드 선언한다.
System.out.println("A");
}
}
public class B extends A{ //자식 클래스 B 선언 및 부모 클래스 A 클래스 상속 받는다.
public void fn() {
System.out.println("B");
}
}
public class Maintest {
public static void main(String args[]) {
A a = new B(); //부모 클래스 변수타입으로 선언하고, 자식클래스로 생성한다.
a.fn(); //a라는 변수로 fn 메서드 호출하지만 a는 B클래스로 생성되었기 때문에 B의 fn을 실행한다.
}
}
'java' 카테고리의 다른 글
java_ 2_ 연산자 (0) | 2021.10.07 |
---|---|
java_ 2_ 조건문(예제) (0) | 2021.10.07 |
java_ 1_환경변수 (0) | 2021.10.06 |
[java] 인터페이스 (0) | 2021.08.30 |
[Java] 01. 원시 데이터형과 클래스 데이터형의 차이 (0) | 2021.08.28 |