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 |