다형성(Polymorphism)
- 다형성이란 하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것을 의미
다형성의 쉬운 예는 오버로딩(overloading)
- 같은 이름, 다른 동작방법
클래스와 다형성
- 서로 다른 두개의 객체가 동일한 타입으로 존재하면서 각각의 클래스의 메소드에 정의되어있는 방식대로 동작한다.
- 이 맥락에서 다형성이란 하나의 클래스(Calculator)가 다양한 동작 방법(CalculatorDecoPlus, CalculatorDecoMinus)을 가지고 있는데 이것을 다형성이라고 할 수 있음.
interface Father{}
interface Mother{}
interface Believer{}
interface Programmer {
void coding();
}
class Steve implements Father, Programmer, Believer {
public void coding() {
System.out.println("fast");
}
}
class Rachel implements Mother, Programmer {
public void coding() {
System.out.println("elegance");
}
}
public class Workspace {
public static void main(String[] args) {
Programmer employee1 = new Steve();
Programmer employee2 = new Rachel();
employee1.coding();
employee2.coding();
}
}
- 직장에서는 Steve와 Rachel의 인터페이스인 Programmer를 통해서 두 사람과 관계함.
- 두 사람이 어떤 종교나 가족관계를 가졌건 인터페이스 Programmer을 가지고 있다면 고용할 수 있음.
- 회사에서는 코딩을 할 수 있는 사람이 필요하고 어떤 사람이 Programmer라는 인터페이스를 구현하고 있다면 그 사람은 반드시 coding 메소드를 구현하고 있을 것이기 때문.
- 또 두 사람에게 업무를 요청할 때는 Programmer라는 인터페이스의 메소드는 coding을 통해서 요청하면 된다.
- 하지만 두 사람의 성향이나 능력에 따라서 그 업무를 수행한 결과가 다른데 Steve는 빠르게 코딩하고, Rachel은 우아하게 코딩하고 있다.
'공부' 카테고리의 다른 글
scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?"); 를 하는 이유 .. (0) | 2019.03.06 |
---|---|
객체지향 생활 체조 (0) | 2019.02.26 |
AssertJ, JUnitSoftAssertions (0) | 2019.01.18 |
접근 제어자 (0) | 2019.01.17 |
jQuery ajax (1) | 2019.01.05 |