package com.java1.day16;
/* 다형성?
* 여러개의 개별적인 클래스를 하나의 부모 클래스 객체로 통합 관리하여 효율성을 높인것 이다.
* 이 개념의 시작은 반드시 각 클래스의 부모는 같아야 한다.
* 다형성에서 가장 중요한 것은 부모 객체에 자식 클래스의 인스턴스를 대입 했을때 어떤 맴버를 사용할수 있고
* 어떤 데이터에 접근할수 있는지를 판별해 내는것이다.
*/
/*
class A { ... }
class B extends A { ... }
class C extends A { ... }
B 와 C 클래스는 A 라는 클래스로부터 상속을 받았다.
다형적 표현으로 바꾸면...
A ap = new A(); // 일반적인 클래스 생성 방법
A bp = new B(); // 다형적 표현
A cp = new C(); // 다형적 표현
자신의 클래스 객체가 아니지만 자신의 부모 클래스라면 인스턴스를 부모 객체에 담을수 있다는 것을 기억하자!
자바에서 조상과 자손의 관계는 있지만 형제 관계는 없다.
*/
public class PolymorphismEx06 {
public static void main(String[] args) {
/*
A3 ap = new A3();
B3 bp = new B3();
System.out.println("ap = " + ap);
System.out.println("bp = " + bp);
*/
Object[] obj = new Object[2]; //모든 클래스는 Object 클래스를 상속받는다.
obj[0] = new A3();
obj[1] = new B3();
for(int i=0; i<obj.length; i++) {
System.out.println("obj[" + i + "] = " + obj[i]); //obj[i].toString()이 생략되었다.
}
}
}
class A3 {
@Override
public String toString() { //오버라이딩
return "A3 클래스";
}
}
class B3 {
@Override
public String toString() { //오버라이딩
return "B3 클래스";
}
}
obj[0] = A3 클래스
obj[1] = B3 클래스