반응형
Swift의 프로토콜과 Java의 인터페이스 비교
Apple 개발자 페이지 에서 iOS 자습서를 진행 합니다 .
나에게 보인다 protocol
와 interface
거의 동일한 기능을 가지고있다.
둘 사이에 차이점이 있습니까?
프로젝트의 차이점 사용법?
업데이트
예 , 나는 위의 링크를 읽어했고, 나는 확실히 아직 어떤 차이와 사이에 사용하지 않아요 protocol
및 interface
. 이와 같은 질문을 할 때 주제에 대한 간단한 설명을보고 싶습니다. 때로는 문서에서 모든 것을 얻는 것이 어려울 수 있습니다.
기본적으로 프로토콜은 다음을 제외하고 Java 인터페이스와 매우 유사합니다.
- 신속한 프로토콜은 반드시 구현해야하는 속성 (예 : 필드)을 지정할 수 있습니다
- 스위프트 프로토콜은 mutating 키워드를 사용하여 값 / 참조를 처리해야 합니다 (프로토콜은 구조체와 클래스로 구현 될 수 있기 때문에)
- 프로토콜 <> 키워드와 함께 언제든지 프로토콜을 결합 할 수 있습니다. 예를 들어, 프로토콜 A 및 B를 준수해야하는 함수 매개 변수를 다음과 같이 선언하십시오.
.
func foo ( var1 : protocol<A, B> ){}
이것들은 Java 개발자 (또는 적어도 지금까지 내가 찾은 것)에게는 즉각적인 명백한 차이점입니다.
@Thomas Schar의 답변을 보완합니다. 스위프트 프로토콜 마법은 확장에서 비롯됩니다.
- Swift 프로토콜은 확장 (Swift
2)을 통해 구현을 얻을 수 있습니다 . Java 8 인터페이스는 기본 구현을 가질 수 있지만 "반복적으로"수행 할 수는 없습니다. - 신속하게 프로토콜 요구 사항 (
필요한 경우 구현)을 모든 클래스 또는 구조에 "반복적으로"추가 할 수 있습니다 . - 스위프트 프로토콜은 일반 (예 : <..>) 사용자 정의 패턴을 따르지 않고 유형별 체계 (예 : 연관된 유형)를 따릅니다. 시작시 혼동 될 수 있지만
경우에 따라 "앵글 브래킷 실명"을 피할 수 있습니다 . - Swift에는 고급 유형 패턴 일치 기능이있어 프로토콜 요구 사항 및 확장이 적용되는 위치 및 방법을 매우 구체적으로 지정할 수 있습니다. Java에서 올 때 혼란 스러울 수 있지만 많은 힘이 있습니다.
- 스위프트 프로토콜은 속성 / 매개 변수를 위해 구성 될 수 있습니다 (예 : 축하 자 : 프로토콜)
몇 시간 동안 머리를 긁적하게 한 것은 모든 프로토콜을 속성 유형으로 사용할 수 없다는 것입니다. 예를 들어, typealias가있는 프로토콜이있는 경우 속성 유형으로 직접 사용할 수 없습니다 (생각할 때 의미가 있지만 Java에서 시작하면 userDao : IDao와 같은 속성을 원합니다).
참고 URL : https://stackoverflow.com/questions/30859334/compare-protocol-in-swift-vs-interface-in-java
반응형
'Programing' 카테고리의 다른 글
Node.js 애플리케이션을 단일 실행 파일로 어떻게 배치합니까? (0) | 2020.06.30 |
---|---|
홀수 업데이트와 Java 업데이트의 차이점은 무엇입니까? (0) | 2020.06.30 |
릴리스 모드에서 코드 동작이 예상과 다릅니다 (0) | 2020.06.30 |
콜 레이션이란 무엇입니까? (0) | 2020.06.30 |
Docker 컨테이너에서 여러 프로그램을 실행할 수 있습니까? (0) | 2020.06.30 |