JAVA Programming/JAVA 문제
[60] 제네릭 예제 내가 직접 생각해보면서 만들기
꾸준히개발하자
2020. 7. 20. 11:28
package generic2;
public class Plastic extends Material {
public String toString() {
return "플라스틱입니다";
}
@Override
public void doPrinting() {
System.out.println("플라스틱으로 만듬 ");
}
}
package generic2;
public class Powder extends Material{
public String toString() {
return "파우더 입니다.";
}
@Override
public void doPrinting() {
System.out.println("파우더로 만듬 ");
}
}
package generic2;
public class GenericPrinterTest {
public static void main(String[] args) {
GenericPrinter<Plastic> genplastic = new GenericPrinter<>();
Plastic plastic = new Plastic();
genplastic.setMaterial(plastic);
System.out.println(plastic);
GenericPrinter genpowder = new GenericPrinter<>();
Powder powder = new Powder();
genpowder.setMaterial(powder);
System.out.println(powder);
plastic.doPrinting();
powder.doPrinting();
}
}
package generic;
public class GenericPrinterTest {
public static void main(String[] args) {
GenericPrinter<Powder> powderPrinter = new GenericPrinter<>(); // <>뒤에 유추해서 안쓸수도 있다.
// 이제 파우더에 대한 재료를 넣어준다.
Powder powder = new Powder();
powderPrinter.setMaterial(powder); // 파우더가 프린터의 재료가 된다.
System.out.println(powderPrinter); // 재료는 파우더 입니다.
GenericPrinter<Plastic> plasticPrinter = new GenericPrinter<>();
Plastic plastic = new Plastic();
plasticPrinter.setMaterial(plastic); // 자료형을 대입을 해서 쓸수있다.
System.out.println(plasticPrinter);
// GenericPrinter<Water> waterPrinter = new GenericPrinter<>(); 제네릭클래스가 상속받은 타입만 올수있다.
powderPrinter.printing();
plasticPrinter.printing();
GenericPrinter printer = new GenericPrinter(); // 제네릭 타입을 안쓸수도 있다.
}
}
package generic2;
public abstract class Material {
public abstract void doPrinting();
}
package generic2;
public class GenericPrinter <T extends Material> {
private T material; // 타입을 T로 준다.
public T getMaterial() {
return material;
}
public void setMaterial(T material) {
this.material = material;
}
public String toString() {
return material.toString(); // 자식들의 toString 이 호출된다.
}
public void doPrinting() {
System.out.println("재료로 만듬");
}
}