오버로딩 (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 |