제너릭 프로그래밍 =: 템플릿 프로그래밍.
제너릭 클래스
public class Generic<T>
{
private T material;
}
1) 제너릭 타입만 정해진다고 new가 되는 것이 아니고 해당 타입으로 정해준 후에 set을 해줘야 함
2) 제너릭 클래스 타입을 한정짓고 싶으면 상위 클래스를 만들어서 그것을 상속하는 클래스들만 타입으로 할 수 있도록 설정함.
3) 상위 클래스를 추상클래스로 만들고 추상메소드를 만들면 상위 클래스를 상속받는 클래스들이 구현하게 되므로 그 클래스들을 제너릭 타입으로 쓰는 클래스에서는 해당 타입 객체 인스턴스를 이용해서 여러 함수를 사용가능.
public class Generic <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();
}
public void print()
{
material.doPrint(); //이것을 제너릭 타입으로 받는 클래스에서 사용 가능.
}
}
----------------------------------------------------------
public abstract class Material {
public abstract void doPrint(); //상위 클래스에서 추상 클래스를 만들어 놓음으로
}
----------------------------------------------------------
public class Plastic extends Material { //Plastic은 Material 을 상속 받고
public String str;
@Override
public String toString()
{
return "저는 플라스틱 입니다";
}
@Override
public void doPrint() { //여기서 구현해야 하고
// TODO Auto-generated method stub
System.out.println("플라스틱으로 프린트");
}
}
----------------------------------------------------------
public class Str {
public static void main(String[] args)
{
Generic p = new Generic();
Plastic pla = new Plastic(); // 여기서 Plastic객체를 생성해서 Plastic Material 이 된 클래스 변수에 set을 해줘야 함.
p.setMaterial(pla);
System.out.println(p);
p.print();
}
}
제너릭 타입 여러개 사용가능
public class Hi<T,V>
{ T material;
V material2; }
제너릭 타입을 지정 안하면 object 타입으로 들어감.
'Java' 카테고리의 다른 글
Set 인터페이스 (0) | 2019.11.03 |
---|---|
Stack , Queue (0) | 2019.10.30 |
Collection 인터페이스 (0) | 2019.10.30 |
String 객체 (0) | 2019.10.30 |
Clone 메소드 (0) | 2019.10.29 |