스위프트 클래스


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