본문 바로가기

공부

다형성 Polymorphism

Polymorphism

다형성(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은 우아하게 코딩하고 있다.

 

 

https://opentutorials.org/course/1223/6127

'공부' 카테고리의 다른 글

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