다형성(Polymorphism)
•
부모 클래스 변수로 자식 클래스 객체를 참조할 수 있다.
class Shape{
public Shape() {}
public void draw() {
System.out.println("도형을 그립니다.");
}
}
class Rectangel extends Shape{
public Rectangel() {}
public void draw() {
System.out.println("사각형 도형을 그립니다.");
}
}
Java
복사
Shape shape = new Shape(); // 도형을 그립니다.
Shape shape2 = new Rectangel (); // 사각형 도형을 그립니다.
Java
복사
Rectangel 의 draw 메소드가
Shape의 draw메소드를 오버라이딩을 한것이다.
이것을 업캐스팅(upcasting, 상형 형변환)이라고 한다.
다형성의 이해
•
부모 = 자식 (가능 하다)
•
자식 = 부모 (불가능 하다)
Shape shape2 = new Rectangel (); // 사각형 도형을 그립니다.
Rectangel shape2 = new Shape // 컴파일 오류!
---------------------------------------------------------------
class Parent {
...
}
class Child extends Parent {
...
}
...
Parent pa = new Parent(); // 허용
Child ch = new Child(); // 허용
Parent pc = new Child(); // 허용
Child cp = new Parent(); // 오류 발생.
Java
복사
다형성이 되려면 오버라이딩이 되어있어야 하고 부모가 메소드가 아닌 자식 메소드를 가지고온다…?
부모클래스에 있는 내용을 자식 클래스에 사용할 수 있고 자식클래스에만 있는것을 부모클래스에서 사용할수없다