Link
Notice
HIT해
[Swift 기초문법 - 46] Open 본문
728x90
Open 이란?
프로젝트 내 어디서든 사용가능하다
다른 외부 모듈에서도 상속 및 오버라이드가 가능하게 한다
예) 오픈소스 및 외부 라이브러리 구조, 애플 프레임워크
uibiewcontroller 클래스명 Cmd + click 을 하면 open 키워드를 볼 수 있다.
상황예시
1. 다른 폴더안의 Utils
class Utils{
class func sayHello(){
print("하이")
}
}
2. import하여 사용하고자 함
import Utils // 파일명
class ViewContoller : UIViewController {
override func viewDidLoad(){
super.viewDidLoad()
Utils.sayHello()
}
}
이때 Utils에 접근이 되지 않는다.
Utils를 전부 public으로 바꿔주면 해결된다
3. 접근제어자 수정
public class Utils{
pubilc class func sayHello(){
print("하이")
}
}
정상적으로 호출해서 사용이 가능하다
그렇다면 상속받아서 overriding은 가능할까?
class MyUtils : Utils {
override func sayHello(){
super.sayHello()
print("오버라이드완")
}
}
// Cannot inherit from non-open class Utils outside of its defining modules
class ViewController .....
외부에 있는 모듈은 상속을 받을 수 없다고 한다.
이때 상속을 받기 위해 사용하는 것이 Open이다!
4. Open
open class Utils{
// 오버라이딩을 하려면 내부 클래스 func도 open을 붙여주어야한다.
open class func sayHello(){
print("하이")
}
}
정리하자면
외부모듈을 상속받거나 import 할 때 유용한 정보다!
'Swift > 기초문법' 카테고리의 다른 글
[Swift 기초문법 - 48] Toggle (0) | 2024.08.19 |
---|---|
[Swift 기초문법 - 47] Singleton 패턴 (0) | 2024.08.19 |
[Swift 기초문법 - 45] Range (0) | 2024.08.18 |
[Swift 기초문법 - 44] static func, final class func (0) | 2024.08.18 |
[Swift 기초문법 - 43] Zip (0) | 2024.08.17 |