
ex)
ex
: 객체를 만들 때 매개변수의 짝이 일치하는 생성자 필요 (자료형의 개수와 순서의 일치)
ex)
메인클래스)
package pack_Interface;
import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		
		System.out.println("아래 연산 중 1개를 선택하세요"
				+ " \n1.덧셈 \t2.뺄셈 \t3. 곱셈 \t4.나눗셈");
		
		Scanner scanner = new Scanner(System.in);
		
		System.out.print("선택한 연산 : ");
		int calcCode = scanner.nextInt();
		
		System.out.print("\n계산에 사용할 숫자 2개를 입력하세요");
		double num1 = scanner.nextDouble();
		double num2 = scanner.nextDouble();
		
		scanner.close();
		
		System.out.println("----------------------------\n");
		System.out.println("[처리결과] ");	
		
		Distribute obj = null; 
		//참조자료형에 대한 초기화값은 null을 사용
		
		switch(calcCode) {
			case 1:
				obj = new Add(num1, num2);
				break;
			case 2:
				obj = new Sub(num1, num2);
				break;
			case 3:
				obj = new Times(num1, num2);
				break;
			case 4:
				obj = new Div(num1, num2);
				break;
		}
		
		obj.calc();
	}
}
package pack_Interface;
public interface Distribute {
	public void calc(); //추상메서드
}
package pack_Interface;
public class Add implements Distribute {
	//alt shift s v
			
		private double num1;
		private double num2;
		
		public Add(double num1, double num2) {
			this.num1 = num1;
			this.num2 = num2;
		}
		
		@Override
		public void calc() {
			System.out.println("Add 객체가 생성되었습니다.");
			System.out.println("calc 메서드가 실행되었습니다.");
			double res = num1+num2;
			System.out.printf("계산결과는 %.1f입니다.",res);
		}
		
}
package pack_Interface;
public class Sub implements Distribute {
	private double num1;
	private double num2;
	
	public Sub(double num1, double num2) {
		this.num1 = num1;
		this.num2 = num2;
	}
	
	@Override
	public void calc() {
		System.out.println("Sub 객체가 생성되었습니다.");
		System.out.println("calc 메서드가 실행되었습니다.");
		double res = num1-num2;
		System.out.printf("계산결과는 %.1f입니다.",res);
	}
}
package pack_Interface;
public class Times implements Distribute {
	private double num1;
	private double num2;
	
	public Times(double num1, double num2) {
		this.num1 = num1;
		this.num2 = num2;
	}
	
	@Override
	public void calc() 
	{System.out.println("Times 객체가 생성되었습니다.");
	System.out.println("calc 메서드가 실행되었습니다.");
	double res = num1*num2;
	System.out.printf("계산결과는 %.1f입니다.",res);
	}
}
package pack_Interface;
public class Div implements Distribute {
	private double num1;
	private double num2;
	
	public Div(double num1, double num2) {
		this.num1 = num1;
		this.num2 = num2;
	}
	
	@Override
	public void calc() {
		System.out.println("Div 객체가 생성되었습니다.");
		System.out.println("calc 메서드가 실행되었습니다.");
		double res = num1/num2;
		System.out.printf("계산결과는 %.1f입니다.",res);
	}
}