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);
}
}