본문 바로가기
수업(국비지원)/Java

[Java] chap6 : 클래스와 객체 - 오버로딩, 오버로딩 메서드의 선택기준,오버로딩조건

by byeolsub 2023. 4. 15.
  • 오버로딩(Overloading)
 오버로딩 예제
    - 같은 클래스에 이름이 같은 메서드가 여러개 존재 할 수 있다.
      단 매개변수 목록이 달라야 한다.(자료형기준. 자료형[es:int,double,...],갯수, 순서)
             => 매개변수 이름이 아니고 자료형으로 판단함.
    - 메서드의 다형성.  

 

📌

package chap6;

class Math3{
	int a = 100;
	int add(int b) {
		System.out.println("1: ");
		return a+b;
	}
	double add(double b) {
		System.out.println("2: ");
		return a+b;
	}
	String add(String b) {
		System.out.println("3: ");
		return a+b;
	}
}
public class OverloadingEx1 {
	public static void main(String[] args) {
		Math3 m3 = new Math3();
		System.out.println(m3.add(10)); //1
		System.out.println(m3.add(10.3)); //2
		System.out.println(m3.add("번호")); //3
		System.out.println(m3.add(10L)); //2. 자동형변환이 가능한 메서드 검색해서 호출. 
	}
}

  • 오버로딩의 조건
 오버로딩의 조건
  1. 메서드의 이름이 같다.
  2. 매개변수(자료형기준)의 목록이 다르다. : 자료형의 순서, 갯수, 종류 달라야 한다.
  3. 그외 리턴타입, 접근제어자, 예외처리는 상관 없다.(같아도 괜찮고 달라도 괜찮다.)
  • 오버로딩 메서드의 선택 기준
  오버로딩된 메서드의 선택 기준.
  1. 호출시 입력된 값의 자료형과 선언부 자료형이 동일한 경우 우선 선택
  2. 1번이 없는 경우
    : 자동 형변환이 최소화 되는 매개변수를 가진 메서드 선택
  3. 주의사항
    : 최소 갯수로 자동형변환 되는 매개변수를 가진 매서드가 2개 이상 존재하면 오류 발생 

 

📌

package chap6;

class Math4{
	int add(int a, int b) {
		System.out.print("1: ");
		return a+b;
	}
	long add(long a, int b) {
		System.out.print("2: ");
		return a+b;
	}
	long add(int a, long b) {
		System.out.print("3: ");
		return a+b;
	}
	long add(long a, long b) {
		System.out.print("4: ");
		return a+b;
	}
}
public class OverloadingEx2 {
	public static void main(String[] args) {
		Math4 m = new Math4();
		System.out.println(m.add(10, 20)); //자동 형변환 선택지가 2개나 된다면 선택을 하기 힘들어서 오류가 남.
		System.out.println(m.add(10, 20L));
		System.out.println(m.add(10L, 20));
		System.out.println(m.add(10L, 20L));
	}
}