Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
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