스위프트 클래스
신속한 클래스는 일반적으로 유연한 구조를 구축하기 위해 사용되는 코드이다.
우리는 클래스의 속성 (상수, 변수)와 메소드를 정의 할 수 있습니다.
그리고 다른 프로그래밍 언어는 스위프트가 별도의 인터페이스 및 구현 파일에 사용자 정의 클래스를 생성 할 필요가 없습니다, 다르다. 당신이 하나의 파일에서 클래스를 정의하는 것이다해야 시스템은 자동으로 다른 외부 인터페이스에 대한 코드를 생성 할 것이다.
체형과 구조 비교
스위프트 클래스와 구조는 많은 공통점을 가지고있다. 공통 즉 :
- 값을 저장하는 데 사용되는 정의 속성
- 기능을 제공하는 방법을 정의
- 정의 스크립트 종속의 값에 액세스하는 데 사용되는
- 생성자를 정의하는 초기 값을 생성하는 데 사용
- 기본값을 향상시키기 위해 구현되는 기능을 확장하여
- 계약에 부합하는 특정 표준 기능을 제공합니다
구조에 비해 클래스는 다음과 같은 추가 기능을 가지고 있습니다 :
- 상속은 클래스가 다른 클래스의 기능을 상속 할 수 있습니다
- 형식 변환 클래스 인스턴스의 런타임 유형 검사 및 해석을 허용
- 해체는 할당 된 자원을 해제 할 수있는 클래스 인스턴스를 할 수 있습니다
- 참조 횟수는 클래스에 여러 참조 할 수 있습니다
구문 :
Class classname { Definition 1 Definition 2 …… Definition N }
클래스 정의
class student{ var studname: String var mark: Int var mark2: Int }
클래스를 인스턴스화 :
let studrecord = student()
예
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
신원 연산자
클래스가 참조 형식이기 때문에, 동시에 배경 클래스 인스턴스에 대한 참조에 상수와 변수가 복수 일 수있다.
두 상수 또는 변수가 같은 클래스의 인스턴스를 참조 여부를 결정하기 위해, 스위프트는 두 개의 동일한 연산자를 내장 :
신원 연산자 | 동일하지 않은 연산자 |
---|---|
운영자는 다음과 같습니다 === | 운영자는 :! == |
두 상수 또는 변수에 해당하는 클래스 반환의 동일한 인스턴스를 참조하는 경우 | 두 개의 서로 다른 상수 또는 변수 참조하는 경우 클래스 인스턴스는 true를 반환 |
예
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