이 현상을 상속을 통해 다형성이라고합니다. 즉, 호출되는 참조가 아닌 객체가 호출되는 런타임에 사용자의 동작이 결정됩니다.
음. 귀하의 본보기를 더욱 확장시킬 수 있습니다. 첫째, ShapeDrawer
을 이제 클래스 계층에게
class Shape{
public void draw(){}
}
class Circle extends Shape{
public void draw(){
//mechanism to draw circle
}
}
class Square extends Shape{
public void draw(){
//mechanism to draw square
}
}
을 생성의 문제는이 또한이 경우 느슨한 결합 시스템
Class ShapeDrawer{
private Shape shape;
public void setShape(Shape shape){
this.shape = shape;
}
public void paint(){
shape.draw();
}
}
을 만드는 데 도움이 깨끗한 코드
class Canvas{
public static void main(String[] args){
List<Shape> shapes = new ArrayList<>();
shapes.add(new Circle());
shapes.add(new Square());
// clean and neat code
for(Shape shape : shapes){
shape.draw();
}
}
}
으로 이어질 수있는 방법을 볼 수 있도록하자 실제 모양과 매우 느슨하게 결합됩니다. ShapeDrawer
도 그림이 Shape
의 어떤 유형인지 알 수 없으며 그림 그리기의 메커니즘도 은으로 추상화되어 있습니다. 특정 모양 그리기의 기본 메커니즘은이 클래스에 영향을주지 않고 변경할 수 있습니다.
출처
2014-09-03 18:26:04
Adi
그런 일반적인 질문에 대해서는 여기에서 질문하는 것이 좋습니다. – talex
다음은 도움이 될 수 있습니까? http://stackoverflow.com/questions/11064409/why-to-use-polymorphism –
실제 프로그램은이 장난감 예보다 훨씬 복잡하기 때문에 – chrylis