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

[[nicholas & July] JAVA의 추상클래스, 인터페이스와 Swift의 프로토콜의 상관관계는 어떻게 될까요? #33

Open
Kim-EunsooSilver opened this issue Dec 21, 2021 · 5 comments

Comments

@Kim-EunsooSilver
Copy link
Collaborator

이번 장에서 추상클래스가 등장을 했기에 우리가 공부한 내용을 Swift로 대치해본다면 어떻게 생각해야 하나...? 라는 질문으로 시작하게 되었습니다.

제가 조사한 내용을 짧게 요약하자면
추상클래스, 인터페이스 ⊆ 프로토콜로 귀결되었습니다.
Reference: 추상클래스 VS 인터페이스

이 생각을 확장해서 책의 문장을 Swift 언어로 대치해 보았습니다!

p. 204
인터페이스를 정의하는 추상 클래스와 인터페이스를 구현하는 구체적인 클래스 간의 상속 관계는 클래스 기반의 객체지향 언어에서 다형성을 구현하는 가장 기본적인 방법이다.

저는 상위 문장을 Swift로 대치해보자면!
(객체들간의 통신 위한)인터페이스를 정의하는 프로토콜과 프로토콜에 정의된 인터페이스를 구현하는 구체적인 타입 간의 채택 관계는 객체지향 언어(혹은 프로토콜 지향 언어)에서 다형성을 구현하는 기본적인 방법이다.

라고 생각해보았습니다!

여러분들의 생각은 어떠신가요?
제가 생각한 추상클래스, 인터페이스 ⊆ 프로토콜 관계가 맞다고 생각하시나요?
그리고, 책의 문장을 Swift 언어로 대치한 문장에 대해서 다르게 생각하고 계시나요?

여러분들의 의견이 궁금합니다!!!

@Kim-EunsooSilver Kim-EunsooSilver added this to the 06 객체 지도 milestone Dec 21, 2021
@jsim27
Copy link
Collaborator

jsim27 commented Dec 22, 2021

자바를 잘 모르지만, 위 문장으로만 놓고 추상 클래스는 프로토콜로 보면 맞는 것 같아요. 바꾸어도 어색함이 전혀 없네요!

하지만 (공용)인터페이스는 프로토콜보다 조금 더 넓은 개념으로, "외부에 공개된 메서드와 프로퍼티의 집합" 이라고 생각합니다😄

@hwangjeha
Copy link

니코와 줄라이가 생각한 추상클래스, 인터페이스 ⊆ 프로토콜 관계에 동의합니다.
하지만 설계는 개발자에 따라서 달라지고
클래스의 상속으로도 204p 그림 6.13의 구조를 설계할 수 있다고 생각합니다.

다형성을 구현하고 유연한 구조를 만드는 데 프로토콜만이 정답은 아니라는 생각이 들었습니다.😊

@yanghojoon
Copy link
Collaborator

추상 클래스, 인터페이스를 하나의 집합으로 본다면 Swift의 프로토콜 보다 더 넓은 개념(프로토콜을 포함하는 개념)이라고 생각합니다! 기능은 인터페이스, 추상클래스와 유사하지만 추상클래스, 인터페이스 ⊇ 프로토콜이지 않을까요??

@hayeonhee
Copy link
Contributor

우선 저는 자바의 인터페이스와 스위프트의 프로토콜이 비슷한 개념이라고 생각하고 있었어요.
자바의 인터페이스 ≒ 스위프트의 프로토콜
누가 더 큰 개념이라 포함할 수 있는지, 또 자바의 추상 클래스는 어떤지는 아직 잘 모르겠습니다!

인용해주신 아래 문장에서

인터페이스를 정의하는 추상 클래스와 인터페이스를 구현하는 구체적인 클래스 간의 상속 관계는 클래스 기반의 객체지향 언어에서 다형성을 구현하는 가장 기본적인 방법이다.

인터페이스가 자바의 인터페이스와 동일한 것이겠죠?

@gogosilver
Copy link
Collaborator

gogosilver commented Dec 22, 2021

자바를 모르는 입장에서 저는 챕터 전반에 걸쳐 말하는 다형성 혹은 자율성을 읽으며 이것들을 몇 가지 정도의 형태로 계속 비유하며 이해해보았던 듯합니다.

  • 프로토콜 채택이나 슈퍼클래스 상속
  • 객체의 은닉화
  • 프로토콜 델리게이션

책에서 말하는 인터페이스나 추상클래스의 역할을 더 확장해서 생각핼 수 있을 것 같습니다.
여러분은 어떻게 생각하시나요?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants