객체지향을 하는 이유 : 유지보수 비용을 절감하기 위해
- 캡슐화: 내부의 구현이 변경되더라도 외부에 영향을 최소화
- 다형성: 구현체 변경의 유현함을 제공
두가지의 다형성
상속에 의한 다형성 VS 인터페이스에 의한 다형성
1. 상속에 의한 다형성
Animal monkey = new Monkey(); Animal lion = new Lion(); Animal Rabbit = new Rabbit();
이렇게 부모인 Animal type으로 형태를 통일시켜준다면, Animal type의 메소드에 대한 특정한 처리를 할 수 있다.
public void moveTest(Animal animal) { for (int i = 0; i < animal.length; i++) { if (animal[i] instanceof Lion) System.out.println("사자는 안됨"); else animal[i].move(); } }
이렇게 처리가 가능하다.
2. 인터페이스에 의한 다형성
public interface Animal() { public void move(); public void eat(); public void sleep(); }
이런 인터페이스가 있을 때
Animal animal;이라는 변수가 선언되었다면
이 변수에는 Animal 인터페이스를 implements한 그 어떤 객체라도 참조할 수 있다.
이것이 다형성!!
다형 참조를 메소드의 형식 매개변수로 사용하는 것은 강력한 기법이다.
이것은 메소드가 전달되는 매개변수의 타입을 제어하는 것을 허용하고, 메소드에게 다양한 타입의 인자들을 받아들일 수 있는 유연성을 제공한다.
반응형
'JAVA > OOP' 카테고리의 다른 글
OOP : Inheritance (상속) (0) | 2015.02.05 |
---|---|
OOP : Encapsulation (캡슐화) (0) | 2015.02.05 |
OOP : Abstraction (추상화) (0) | 2015.02.04 |
객체지향의 5원칙 (SOLID) (0) | 2015.02.04 |
OOP : Abstraction, Encapsulation, Inheritance and Polymorphism (0) | 2015.02.04 |