JAVA

[자바/JAVA] 프로그래밍 - 클래스(Class) - Overloading

21종 2023. 6. 8. 20:04

오버로딩

한 클래스 내에 같은 메소드명으로 정의할 수 있는 것

 

// 같은 메소드 명이기 때문에 어떤것을 돌려야 할지 몰라서 에러가 발생
public void test() {
    System.out.println("a");
}

public void test() {
    System.out.println("b");		
}
package com.kh.chap06_method.controller;

public class OverloadingTest {
	
	// 반환형 매개변수 없는 메소드
	public void test() {
		
	}
	
	// 반환형 없고 매개변수 1개 있는 메소드
	public void test(int a) {
		
	}
	
	// 반환형 없고 매개변수 2개(정수 먼저) 있는 메소드
	public void test(int a, String s) {
		
	}
	
	// 반환형 없고 매개변수 2개(문자 먼저) 있는 메소드
	public void test(String s, int a){
		
	}
	
	// 반환형 없고 매개변수 2개(둘다 정수) 있는 메소드
	public void test(int a, int b) {
		
	}
	
	/*
	public void test(int c, int d) {	=> 안됨
		
	}
	오버로딩이 가능하려면 매개변수명이 아니라
	매개변수의 개수와 순서가 다르게 작성돼야함.
	*/
	
	public void test(String str) {
		
	}
	/*
	public int test(String str) {	// 얘 안된다.
			
	}
	반환형이라도 상관 없음!!
	무조건 !!!! 매개변수가 달라야한다.
	*/
	
	/*
	private void test(String str) {	// 애도 안된다.
		
	}
	접근제한자랑도 상관 없음!!!
	무조건 !!!! 매개변수가 달라야한다.!!!
	*/
}


 결론
 * 오버로딩 :  한 클래스내에 동일한 이름의 클래스들
 *  단, 매개변수명, 접근제한자, 반환형을 다 떠나서
 * 매개변수의 자료형과 개수, 순서가 다르게 작성돼있어야함!!!

package com.kh.chap06_method.run;

import com.kh.chap06_method.controller.OverloadingTest;

public class MethodRun {

	public static void main(String[] args) {
		
		OverloadingTest ot = new OverloadingTest();
		ot.test();
		ot.test(10);
		ot.test(10,"ㅎㅎㅎㅎ");
		ot.test("ㅋㅋㅋㅋ",20);
		ot.test(10,10);
		ot.test("차은우");
        // 위에 얘네 다 된다.
		
		// 오버로딩의 대표적인 예 => print()
		System.out.print(0);
        System.out.print("안녕");
	}
}