gwooden_코린이
java_다형성 연습01_221130(8일차) 본문
728x90
package 연습01;
public class Main {
/**
* Mineral 인터페이스 생성
* MineralCalculator에 있는 add 메서드를 한개로 모든 광물에 대한 계산 처리
*/
public static void main(String[] args) {
MineralCalculator mlc = new MineralCalculator();
// Gold gold = new Gold();
// new Gold(); <--기본 생성자
mlc.add(new Gold()); // 금에 대한 계산
mlc.add(new Silver());
mlc.add(new Bronze());
// 광물을 더 추가할 경우 Main에서도 위와 같이 추가하면 된다.
// 추가할 광물에 대한 클래스 추가 및 Mineral 인터페이스 add
System.out.println(mlc.getValue());
}
}
각 광물에 대한 점수를 전부 합한 총합 클래스
광물이 추가되어도 합계를 해주는 MineralCalculator에서 손쉽게 처리
package 연습01;
public class MineralCalculator {
int value = 0;
// (미네랄에 관련된 상속된 객체를 전달 받게끔)
void add(Mineral mineral) { //add 메서드 내에 (미네랄 객체)
// value 값 저장, 누적 계산, 객체에 메서드 호출하여 값을 value + 누적
value = value + mineral.getValue();
}
int getValue() {
return value;
}
}
각 광물 클래스에 미네랄 인터페이스 add
package 연습01;
public class Gold implements Mineral {
// Mineral를 상속을 받을 때 자식 클래스가 부모 클래스 보다 접근자가 작으면 안되기 때문에
// public 접근자 넣어줘야 된다.
@Override
public int getValue() {
return 100;
}
}
package 연습01;
public class Silver implements Mineral {
@Override
public int getValue() {
return 90;
}
}
package 연습01;
public class Bronze implements Mineral {
@Override
public int getValue() {
return 80;
}
}
인터페이스
package 연습01;
public interface Mineral {
// 인터페이스에서 값은 상수라 값 변경이 불가하기 때문에
// 인터페이스에서는 따로 값을 지정하지 않는다.
// public abstract <--이 부분이 생략 된 것 int getValue();
int getValue();
}
728x90
'java > 8일차' 카테고리의 다른 글
java_내부인터페이스_221130(8일차) (0) | 2022.11.30 |
---|---|
java_내부클래스_221130(8일차) (0) | 2022.11.30 |
java_다형성_221130(8일차) (0) | 2022.11.30 |
java_추상/인터페이스_221130(8일차) (0) | 2022.11.30 |
java_인터페이스02_221130(8일차) (0) | 2022.11.29 |
Comments