BackEnd/Java

[Java] Overloading (생성자, 메소드 오버로딩)

Cune 2021. 12. 15. 12:17

 

1. 생성자 오버로딩

  • 클래스 이름이 동일할 것
  • 매개 변수의 타입, 개수, 순서가 달라야 한다
public class Car {

	//필드
	String model;
	String color;
	int price;
	int speed;
	
	Car(){	//기본생성자 
		
	}
	
	Car(String model){
		this.model = model;	
		// 필드 model = 매개변수 model
	}
	
	Car(String model, String color){
		this.model = model;
		this.color = color;
	}
	
	Car(int price, int speed){
		this.price = price;
		this.speed = speed;
	}
}
public class MainClass {
	public static void main(String[] args) {
		
		
		Car car1 = new Car();
	
		Car car2 = new Car("승합차");
		
		Car car3 = new Car("승합차", "블랙");
		
		Car car4 = new Car(1000000,110);
	}

 

 

2. 메소드 오버로딩

  • 메소드 이름이 동일할 것
  • 매개 변수의 타입, 개수, 순서가 달라야 한다
package overload;

public class MainClass {

	public static void main(String[] args) {
		
		
		method();
		
		method('a');
		
		method(10);
		
		method('a', 10);
        

		int sum = sumProc(90, 95, 100, 75);
		System.out.println(sum);
		
		sum = sumProc(10, 20, 30);
        
}

//*******************************************************
		
		static void method() {
			System.out.println("method()");
		}

		static void method(char c) {
			System.out.println("method(c)");
		}
	
		static void method(int i) {
			System.out.println("method(int i)");
		}
		
		static void method(char c, int i) {
			System.out.println("method(char c, int i)");
		}
        
		//매개변수 순서만 달라지는 것은 오버로딩X
		static void method( int i, char c) {
			System.out.println("method( int i, char c)");
		}
		
		//타입은 바뀌지 않고 매개변수 이름만 바뀌는것은 오버로딩X
		static void method(char a, int k) {
			System.out.println("method(char c, int i)");
		}
		
		//리턴 값이 동일해야함 void -> int (X)
		static int method(char c, int i) {
			System.out.println("method(char c, int i)");
			return 1;
		}
		
        
    
//*******************************************************

		//+...가변인수 (매개변수 갯수 유동적)
		static int sumProc(int...num) {
			int sum = 0;
			
			for (int i = 0; i < num.length; i++) {
				sum += num[i];
			}
			return sum;
		}
		
		//가변인수는 맨 뒤에 위치할 것 (int...num, String name) 불가능
		static void sumPorc(String name, int...num) {
			int sum = 0;
			for(int i = 0; i < num.length; i++) {
				sum += num[i];
				System.out.println(name + "님의 합계 " + num + "점 입니다.");
			}
		}
}