다형성이란 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미한다. 자바에서는 이러한 다형성을 부모 클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를 참조할 수 있도록 하여 구현하고 있다.
(참고 : http://www.tcpschool.com/java/java_polymorphism_concept)
이번 주차 강의에서 사용한 다형성 개념 부분의 코드이다.
팩토리 패턴
Shape shape;
if(this.eSelectedTool == ETools.eRectangle) {
this.shape = new Rectangle(x, y);
} else if(this.eSelectedTool == ETools.eOval) {
this.shape = new Oval(x, y);
} else if(this.eSelectedTool == ETools.eLine) {
this.shape = new Line(x, y);
} else if(this.eSelectedTool == ETools.ePolygon) {
this.shape = new Polygon(x, y);
}
Panel 파일 안에 Shape 객체를 하나 선언해놓고, 조건문에 따라 알맞은 도형들을 생성한다. Shape 클래스는 함수적 인터페이스가 동일하여 특정한 형태로써 작동될 수 있는 추상화된 추상클래스이다. 구체화된 도형 클래스들은 Shape 클래스를 상속받고 있다. Shape 클래스 안에 resize, draw 메소드가 존재하는데 각각의 도형 클래스 내부에서 해당 메소드들을 오버라이딩하여 구현한다.