Java/Excercise

generic ch04 Material

낭구리 2021. 9. 3. 15:26
package ch04;

//new해서 실제 메모리에 사용할 필요가 없는경우
//abstract 클래스로 만들 수 있다.
public abstract class Material {

	public abstract void doPrinting();
}

 

package ch04;

public class Plastic extends Material {

    @Override
	public void doPrinting() {
		System.out.println("플라스틱 재료로 출력합니다");

	}

	@Override
	public String toString() {
		return "재료는 플라스틱입니다";
	}
}

 

package ch04;

publicclass Powder extends Material {

	@Override
	public void doPrinting() {
		System.out.println("파우더 재료로 출력합니다");

	}

	@Override
	public String toString() {
		return "재료는 파우더입니다.";
	}
}

 

package ch04;

public class GenericPrinter<T extends Material> {
//T에 material만 적용

	private T material;

	public T getMaterial() {
		return material;
	}

	public void setMaterial(T Material) {
		this.material = material;
	}

	@Override
	public String toString() {
		return material.toString();
	}
}

 

package ch04;

class Water{
	@Override
	public String toString() {
		return "재료는 물입니다.";
	}
}
public class TExtendsClass {

	public static void main(String[] args) {

		//<T extends 클래스> 사용하기
		//T자료형의 범위를 제한 할 수있음
		//제한하지않으면 자료형으로 아무 클래스나 올수있다.
		
		GenericPrinter<Powder> powderPrinter = new GenericPrinter<Powder>();
		powderPrinter.setMaterial(new Powder());
		
		Powder powder = powderPrinter.getMaterial();
		System.out.println(powder.toString());
			
		System.out.println("------");
		
//		GenericPrinter<Water>waterPrinter = new GenericPrinter<Water>();
		
	}

}

'Java > Excercise' 카테고리의 다른 글

swing ch03 MyFrame2  (0) 2021.09.03
swing ch03 Jpanel  (0) 2021.09.03
generic ch03 GenericPrinterTest  (0) 2021.09.03
generic ch03 genericPrinter<T>  (0) 2021.09.03
generic ch02 MainTest  (0) 2021.09.03