본문 바로가기
Java/Definition&Grammar

[Java] 오버로딩 & 오버라이딩

by 꾸압 2021. 3. 15.

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

댓글