상위 클래스의 필요성
- T 자료형의 범위를 제한 할 수 있음
- 상위 클래스에서 선언하거나 정의하는 메서드를 활용할 수 있음
- 상속을 받지 않는 경우 T는 Object 클래스가 기본으로 제공하는 메서드만 사용가능
T extends를 사용한 프로그래밍
- GenericPrinter 에 material 변수의 자료형을 상속 받아 구현
- T에 무작위 클래스가 들어갈 수 없게 Meterial 클래스를 상속 받은 클래스로 한정

GenericPrinter.java
public class GenericPrinter<T extends Material> { // T에 대한 제한
private T material;
public final T getMaterial() {
return material;
}
public final void setMaterial(T material) {
this.material = material;
}
public String toString() {
return material.toString();
}
}
- 상속을 Material로 줘서 T에 대한 클래스 제한을 해준다.
Material.java
public abstract class Material {
public abstract void doPrinting(); // 공통 메서드
}
- 추상 클래스로 선언
- 추상 메소드로 공통 메서드 선언
Plastic.java
public class Plastic extends Material { // Material 상속
public String toString() {
return "재료는 Plastic 입니다";
}
@Override
public void doPrinting() {
System.out.println("플라스틱프린팅");
}
}
Powder.java
public class Powder extends Material { // Material 상속
public String toString() {
return "재료는 Powder 입니다";
}
@Override
public void doPrinting() {
System.out.println("파우더 프린팅");
}
}
GenericPrinterTest.java
public class GenericPrinterTest {
public static void main(String[] args) {
Powder powder = new Powder();
GenericPrinter<Powder> powderPrinter = new GenericPrinter<Powder>();
powderPrinter.setMaterial(powder);
Powder p = powderPrinter.getMaterial(); // 형변환 안해도됌
System.out.println(powderPrinter.toString());
p.doPrinting();
}
}'JAVA' 카테고리의 다른 글
| [JAVA] 순차적으로 자료를 관리하는 List 인터페이스를 구현한 클래스와 그 활용 (1) | 2023.08.28 |
|---|---|
| [JAVA] 자바에서 제공되는 자료구조 구현 클래스들 - 컬렉션 프레임워크 (0) | 2023.08.24 |
| [JAVA] 무엇이든 담을 수 있는 제네릭 프로그래밍 (2) | 2023.08.22 |
| [JAVA] 자바와 자료구조 (1) | 2023.08.13 |
| [JAVA] String, StringBuilder, StringBuffer 클래스 (0) | 2023.08.13 |