5월19일실습문제.hwp
0.18MB

 

실습 문제는 5월 19일 실습 문제.hwp에 있습니다.

시험에 나오는 건 절대 아니기 때문에 간단히 돌려보시기만 하면 됩니다.

 

class Orange2
{
	int sugarContent;
	public Orange2(int sugar) { sugarContent = sugar; }
	public void showSugarContent() { System.out.println("오렌지 당도 " + sugarContent); }
}

class Apple2
{
	int sugarContent;
	public Apple2(int sugar) { sugarContent = sugar; }
	public void showSugarContent() { System.out.println("사과 당도 " + sugarContent); }
}

class FruitBox1<T>
{
	T item;
	public void store(T item) { this.item = item; }
	public T pullOut() { return item; }
}

public class assign4 {
	public static void main(String[] args) {
		FruitBox1<Orange2> fBox1 = new FruitBox1<Orange2>();
		fBox1.store(new Orange2(10));
		Orange2 org1 = fBox1.pullOut();	
		org1.showSugarContent();
		
		FruitBox1<Apple2> fBox2 = new FruitBox1<Apple2>();
		fBox2.store(new Apple2(20));
		Apple2 app1 = fBox2.pullOut();	
		app1.showSugarContent();
	}
}

 

제네릭에 대해 사용 방법을 익힐 수 있는 예제입니다.

 

class FruitBox2
{
	Object item;
	public void store(Object item) { this.item = item; }
	public Object pullOut() { return item; }
}

 

앞서 assign3.java 파일에서 FruitBox 클래스를 이렇게 정의한다면,

메인 메소드에서 FruitBox 클래스의 객체를 선언할 때, 필요에 따라 형 변환을 일일이 해줘야 한다는 단점과,

Object 객체 인자를 넣을 자리에 String 인자나 다른 객체 인자를 넣어준다면

컴파일 오류가 발생한다는 단점이 있습니다. ( 인자의 형은 무조건 똑같아야 합니다. )

 

class OrangeBox
{
	Orange item;
	public void store(Orange item) { this.item = item; }
	public Orange pullOut() { return item; }
}

 

FruitBox 클래스 대신에 OrangeBox 클래스를 정의하고 멤버 변수와 객체 인자를 Orange 로 정의할 수 있지만,

필요에 따라 OrangeBox, AppleBox, BananaBox 클래스를 각각 정의해야 한다는 번거로움이 있습니다.

 

class FruitBox1<T>
{
	T item;
	public void store(T item) { this.item = item; }
	public T pullOut() { return item; }
}

 

이렇게 제네릭을 사용한다면, 메인 메소드에서 T를 Orange로 대체해서 객체를 생성하고,

T를 Apple로 대체하여 객체를 생성할 수 있습니다.

즉, 하나의 클래스 정의로 둘 이상의 클래스를 정의한 효과를 가져다줍니다!

 

해당 예제는 밑의 링크에서 가져왔습니다.

 

https://jamesyleather.tistory.com/85

 

[Java] 제네릭 클래스 - 과일상자 실습

제네릭(Generic)  - jdk1.5에서 추가된 문법으로 상당수의 객체에서 사용하고 있는 개념  - 제네릭을 사용하면 사용하고자 하는 자료형을 클래스에서 미리 지정하지 않고, 인스턴스 

jamesyleather.tistory.com

+ Recent posts