Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

부록 B. 타입계층의 구현 #34

Open
youngvly opened this issue Jan 3, 2022 · 0 comments
Open

부록 B. 타입계층의 구현 #34

youngvly opened this issue Jan 3, 2022 · 0 comments
Assignees
Labels

Comments

@youngvly
Copy link
Owner

youngvly commented Jan 3, 2022

  • 타입이 식별된 후에 타입에 속하는 객체를 구현하기 위해 클래스를 사용하는 것이다.
  • 의존하는 대상이 추상적일수록 결합도는 낮아지고, 변경영향도도 낮아진다.
  • 골격 구현 추상 클래스 skeletal implementation abstract class
    • 중복코드 제거를 위해 interface를 상속하는 abstract class를 사용할 수 있다.

duck typing

: 어떤 인터페이스에 정의된 행동을 수행할 수 있다면 그 객체를 해당 타입으로 분류해도 문제가 없다.

  • 동적타입언어에서는 명시적으로 동일한 클래스를 상속받거나 인터페이스 구현을 하지 않더라도, 시그니처가 동일한 메서드를 가진 클래스는 같은 타입으로 취급할 수 있다.
  • duck test : 어떤 대상의 행동이 오리와 같다면, 그것을 오리라는 타입으로 취급해도 무방하다.
  • 유연한 설계가 가능하지만, 런타임에 오류가 발생된다.

Mixin

  • 목적은 다양한 객체 구현 안에서 동일한 행동을 중복코드없이 재사용할 수 있게 만드는 것이다.
    • scala trait
    • java interface default method
      • 유사하게 구현은 가능하지만, 무조건 Public이 되어야한다.
      • 디폴트 메서드가 추가된 이유는 추상클래스를 대체하려는 것이 아니고, 기존 인터페이스에 새로운 오퍼레이션을 추가할때 하위 호환성을 위한 것.
@youngvly youngvly added the 정리 label Jan 3, 2022
@youngvly youngvly self-assigned this Jan 4, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant