스위프트 클래스
Swift 클래스는 코드 작성을 위한 일반적이고 유연한 구성입니다.
클래스의 속성(상수, 변수)과 메서드를 정의할 수 있습니다.
다른 프로그래밍 언어와 달리 Swift는 사용자 정의 클래스에 대한 독립적인 인터페이스 및 구현 파일을 만들 필요가 없습니다. 단일 파일에 클래스를 정의하기만 하면 시스템이 자동으로 다른 코드에 대한 외부 인터페이스를 생성합니다.
클래스와 구조의 비교
Swift의 클래스와 구조는 공통점이 많습니다. 공통점은 다음과 같습니다.
값을 저장하는 속성 정의
기능을 제공하는 메서드 정의
값에 액세스하는 제휴 스크립트 정의
초기화 값을 생성하는 생성자 정의
기본 구현의 기능을 증가시키기 위해 확장함으로써
특정 클래스에 대한 표준 기능을 제공하는 프로토콜을 준수합니다
구조와 비교하여 클래스는 다음과 같은 추가 기능을 갖습니다.
상속을 허용합니다. 하나의 클래스가 다른 클래스를 상속함 클래스의 특성
유형 변환을 사용하면 클래스 인스턴스의 유형을 런타임에 확인하고 해석할 수 있습니다.
Destructor를 사용하면 클래스 인스턴스가 할당된 모든 리소스를 해제할 수 있습니다
참조 계산을 통해 클래스 다중 참조
구문:
Class classname { Definition 1 Definition 2 …… Definition N }
클래스 정의
class student{ var studname: String var mark: Int var mark2: Int }
인스턴스화된 클래스:
let studrecord = student()
Instance
import Cocoa class MarksStruct { var mark: Int init(mark: Int) { self.mark = mark } } class studentMarks { var mark = 300 } let marks = studentMarks() print("成绩为 \(marks.mark)")
위 프로그램 실행의 출력 결과는 다음과 같습니다.
成绩为 300
클래스 속성 액세스 참조 유형으로
클래스의 속성 .을 통해 액세스할 수 있습니다. 형식은 다음과 같습니다. 인스턴스 클래스 이름. 속성 이름:
import Cocoa class MarksStruct { var mark: Int init(mark: Int) { self.mark = mark } } class studentMarks { var mark1 = 300 var mark2 = 400 var mark3 = 900 } let marks = studentMarks() print("Mark1 is \(marks.mark1)") print("Mark2 is \(marks.mark2)") print("Mark3 is \(marks.mark3)")
위 프로그램의 실행 출력은 다음과 같습니다.
Mark1 is 300 Mark2 is 400 Mark3 is 900
ID 연산자
클래스는 참조 유형이므로 여러 상수와 변수가 있을 수 있습니다. 배경 동시에 클래스 인스턴스를 참조합니다.
두 개의 상수 또는 변수가 동일한 클래스 인스턴스를 참조하는지 확인하기 위해 Swift에는 두 개의 내장 항등 연산자가 있습니다:
식별 연산자 | 식별 연산자 |
---|---|
연산자는 다음과 같습니다. === | 연산자는 다음과 같습니다. !== |
두 개의 상수 또는 변수가 동일한 클래스 인스턴스를 참조하면 true를 반환합니다. | 두 상수 또는 변수가 서로 다른 클래스 인스턴스를 참조하면 true를 반환합니다 |
Instance
import Cocoa class SampleClass: Equatable { let myProperty: String init(s: String) { myProperty = s } } func ==(lhs: SampleClass, rhs: SampleClass) -> Bool { return lhs.myProperty == rhs.myProperty } let spClass1 = SampleClass(s: "Hello") let spClass2 = SampleClass(s: "Hello") if spClass1 === spClass2 {// false print("引用相同的类实例 \(spClass1)") } if spClass1 !== spClass2 {// true print("引用不相同的类实例 \(spClass2)") }
위 프로그램 실행 출력 결과는 다음과 같습니다.
引用不相同的类实例 SampleClass