package ex13.example3; class Dog { public String name; public int age; public void speak() { System.out.println("멍멍"); } } class Cat { public String name; public int age; public void speak() { System.out.println("야옹"); } } public class GenericEx03 { public static void main(String[] args) { Object[] arr = new Object[2]; arr[0] = new Dog(); arr[1] = new Cat(); // 오브젝트로 만들었을 때 단점: 다운캐스팅 해야한다.(귀찮음) Dog d1 = (Dog) arr[0]; // [-> Object, Dog] Cat c1 = (Cat) arr[1]; // [-> Object, Cat] d1.speak(); c1.speak(); } }
추상 메서드 Animal을 상속 받게 하는 것이 더 편하다.
package ex13.example3; abstract class Animal { public abstract void speak(); } class Dog extends Animal { public String name; public int age; public void speak() { System.out.println("멍멍"); } } class Cat extends Animal { public String name; public int age; public void speak() { System.out.println("야옹"); } } public class GenericEx03 { public static void main(String[] args) { Animal[] arr = new Animal[2]; arr[0] = new Dog(); arr[1] = new Cat(); // 오브젝트로 만들었을 때 단점: 다운캐스팅 해야한다.(귀찮음) Animal d1 = (Dog) arr[0]; // [-> Object, Dog] Animal c1 = (Cat) arr[1]; // [-> Object, Cat] d1.speak(); c1.speak(); } }
Share article