gwooden_코린이

java_다형성 연습01_221130(8일차) 본문

java/8일차

java_다형성 연습01_221130(8일차)

gwooden22 2022. 11. 30. 11:54
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
Comments