package org.example;
// 다형성으로 모든 객체는 부모 객체에 담을 수 있다.
class Apple {
private String name;
public Apple(String name){
this.name = name;
}
@Override
public String toString() {
return "Apple{" +
"name='" + name + '\'' +
'}';
}
}
class Orange{
private String name;
public Orange(String name){
this.name = name;
}
@Override
public String toString() {
return "Orange{" +
"name='" + name + '\'' +
'}';
}
}
// 1.제네릭 이전의 방법
class Box{
private Object obj; // 모든 오브젝트를 담을 수 있다.
public Object getObj() {
return obj;
}
public void setObj(Object obj) {
this.obj = obj;
}
}
public class Main {
public static void main(String[] args) {
Box box1 = new Box();
box1.setObj(new Apple("사과"));
Box box2 = new Box();
box1.setObj(new Orange("오렌지"));
// box1.getObj();
// box2.getObj();
Orange orange = (Orange) box1.getObj();
Apple apple = (Apple) box2.getObj();
System.out.println(orange);
System.out.println(apple);
}
}
}
package org.example;
// 다형성으로 모든 객체는 부모 객체에 담을 수 있다.
class Apple {
private String name;
public Apple(String name){
this.name = name;
}
@Override
public String toString() {
return "Apple{" +
"name='" + name + '\'' +
'}';
}
}
class Orange{
private String name;
public Orange(String name){
this.name = name;
}
@Override
public String toString() {
return "Orange{" +
"name='" + name + '\'' +
'}';
}
}
// 2.제네릭의 방법
class Box<T>{
private T obj; // 모든 오브젝트를 담을 수 있다.
public T getObj() {
return obj;
}
public void setObj(T obj) {
this.obj = obj;
}
}
public class Main {
public static void main(String[] args) {
Box <Apple> box1 = new Box();
box1.setObj(new Apple("사과"));
Box <Orange> box2 = new Box();
box2.setObj(new Orange("오렌지"));
Apple apple = box1.getObj();
Orange orange = box2.getObj();
// Orange orange = (Orange) box1.getObj();
// Apple apple = (Apple) box2.getObj();
System.out.println(orange);
System.out.println(apple);
}
}
}
개발자의 실수를 줄이고자 사용하는 방법이다.
'java' 카테고리의 다른 글
JAVA 의 메모리 모델 (0) | 2024.01.31 |
---|---|
컬렉션 (0) | 2024.01.30 |
예외처리 (0) | 2024.01.25 |
인터페이스 (0) | 2024.01.25 |
상속클래스의 매소드 오버로드 (0) | 2024.01.23 |