Skip to content

Instantly share code, notes, and snippets.

@appkr
Created February 4, 2020 14:42
Show Gist options
  • Save appkr/70a0261b8a4ecf12e1cb5f0cb18a71f7 to your computer and use it in GitHub Desktop.
Save appkr/70a0261b8a4ecf12e1cb5f0cb18a71f7 to your computer and use it in GitHub Desktop.
polymorphism
  • 부모 타입이 사용될 위치에 자식 타입을 사용하는 것
  • 부모 타입 대신 대입된 자식 타입이 재정의(override)한 메서드를 사용함으로써, 어떤 자식 타입이 대입되느냐에 따라서 그 실행 결과가 다양해질 수 있음
public class Foo {
    void doSomething() { /*어떤 동작*/ }
}

public class Bar extends Foo {
    @Override
    void doSomething() { /*다른 동작*/}
}

public class Baz extends Foo {
    @Override
    void doSomething() { /*또 다른 동작*/}
}

public class Main {
    public static void main(String[] args) {
        Foo obj1 = new Bar(); // obj1은 Foo 타입으로 선언되었으나, Bar 타입이 대입됨
        obj1.doSomething();
        
        Foo obj2 = new Baz(); // obj2는 Foo 타입으로 선언되었으나, Baz 타입이 대입됨
        obj2.doSomething();
    }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment