English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Swift 클래스는 코드를 구축하는 데 사용되는 일반적이고 유연한 구조체입니다.
클래스에 속성(상수, 변수)과 메서드를 정의할 수 있습니다.
기타 프로그래밍 언어와는 달리, Swift는 사용자 정의 클래스에 대한 독립적인 인터페이스와 구현 파일을 생성하도록 요구하지 않습니다. 사용자가 해야 할 일은 단일 파일에서 클래스를 정의하는 것입니다. 시스템은 다른 코드에 대한 외부 인터페이스를 자동으로 생성합니다.
Swift에서 클래스와구조체많은 공통점이 있습니다. 공통점은 다음과 같습니다:
값을 저장하기 위해 속성을 정의합니다
기능을 제공하기 위해 메서드를 정의합니다
값에 접근하기 위해 부속 스크립트를 정의합니다
초기화 값을 생성하기 위해 생성자를 정의합니다
확장을 통해 기본 구현을 추가할 수 있습니다
프로토콜에 맞춰 기본 기능을 제공하기 위해 맞춤형을 만듭니다
구조체와 비교해 볼 때, 클래스는 다음과 같은 추가 기능을 가지고 있습니다:
thừa kế는 클래스가 다른 클래스의 특성을 상속할 수 있음
타입 변환은 실행 중에 클래스 예제의 타입을 확인하고 설명할 수 있음
디스루트러는 클래스 예제가 할당된 모든 자원을 해제할 수 있음
참조 계산자는 클래스에 대한 여러 참조를 허용합니다
class classname { 정의 1 정의 2 …… 정의 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
클래스는 참조형입니다. 여러 상수나 변수가 배후에서 동시에 하나의 클래스 예제를 참조할 수 있습니다.
두 개의 상수나 변수가 동일한 클래스 예제를 참조하는지 판단하기 위해 Swift는 두 개의 동등 연산자를 내장했습니다:
가능한 동등 연산자 | 불가능한 동등 연산자 |
---|---|
연산자는:====입니다 | 연산자는:!==입니다 |
두 개의 상수나 변수가 동일한 클래스 예제를 참조하는 경우 true를 반환합니다 | 두 개의 상수나 변수가 다른 클래스 예제를 참조하는 경우 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