컴퓨터/Java

[Java] 오버로딩

peridott 2024. 7. 25. 10:01

main_MethodOverloading.java

package _03_overloading;

class Over {
	// 오버로딩의 조건
	// 1. 메서드 이름이 같아야 한다
	// 2. 매개변수의 개수가 다르던지 자료형이 달라야 한다 
	int add() {  
		return 0;
	}
	int add(int num1) {  
		return num1;
	}
	int add(int num1, int num2) {
		return num1 + num2;
	}
	double add(int num1, double num2) {  // 리턴 자료형은 상관없음
		return num1 + num2;
	}
	String add(String name) {
		return "이름 : " + name;
	}
}

public class T01_main_MethodOverloading {
	public static void main(String[] args) {
		Over o1 = new Over();
		System.out.println(o1.add(3,5));
		System.out.println(o1.add(3,5.0));
		System.out.println(o1.add());
		System.out.println(o1.add(7));
		System.out.println(o1.add("홍길동"));
	}
}

 

 

main_ConOverloading.java

package _03_overloading;

class Aaa {
	int num;
	double dou;
	String name;
	
	Aaa() {
		num = 1;
		dou = 1.0;
		name = "홍길동";
		System.out.println("매개변수가 없는 생성자");
	}
	
	Aaa(int num) {
		this.num = num;
		dou = 1.0;
		name = "홍길동";
		System.out.println("매개변수가 1개인 생성자");
	}
	Aaa(int num, double dou) {
		this.num = num;
		this.dou = dou;
		name = "홍길동";
		System.out.println("매개변수가 2개인 생성자(int,double)");
	}
	Aaa(int num, String name) {
		this.num = num;
		dou = dou;
		this.name = name;
		System.out.println("매개변수가 2개인 생성자(int,String)");
	}
	Aaa(int num, double dou, String name) {
		this.num = num;
		this.dou = dou;
		this.name = name;
		System.out.println("매개변수가 3개인 생성자");
	}
	
	// 가변인자 : 들어올 인자의 갯수를 모를때
	// (int... str) : 인자는 0개 이상
	void method(int... num) {
		System.out.println("인자가 0개 이상");
	}
	// (String name, String... str) : 인자는 1개 이상
	void method(String name, String... str) {
		System.out.println("인자가 반드시 1개 이상");
	}

	// 오류 : 모든 인자는 가변인자에 들어감
	/*
	void method(String... str, String num) {
		
	}
	*/
}

public class T02_main_ConOverloading {
	public static void main(String[] args) {
		Aaa a1 = new Aaa();
		Aaa a2 = new Aaa(5, 10.56, "나야나");
		Aaa a3 = new Aaa(10, "문자열");
		Aaa a4 = new Aaa(50, 50.1234);
		a4.method(5);
		a4.method("문자");
		a4.method();
	}
}

 

 

ThisConOverloading.java

package _03_overloading;

class ThisAaa {
	int num;
	double dou;
	String name;
	
	// 생성자에서 this() : 다른 생성자 호출
	// this()는 맨 첫줄에 있어야 됨
	ThisAaa() {
		this(1, 1.0, "홍길동");
		System.out.println("매개변수가 없는 생성자");
	}
	ThisAaa(int num) {
		this(num, 1.0, "홍길동");
		System.out.println("매개변수가 1개인 생성자");
	}
	ThisAaa(int num, double dou) {
		this(num, dou, "홍길동");
		System.out.println("매개변수가 2개인 생성자(int,double)");
	}
	ThisAaa(int num, double dou, String name) {
		this.num = num;
		this.dou = dou;
		this.name = name;
		System.out.println("매개변수가 3개인 생성자");
	}
}

public class T03_main_ThisConOverloading {
	public static void main(String[] args) {
		ThisAaa a1 = new ThisAaa();
		/*ThisAaa a2 = new ThisAaa(5, 10.56, "나야나");
		ThisAaa a4 = new ThisAaa(50, 50.1234);*/
	}
}