Swift - Lớp học

Các lớp trong Swift 4 là các khối xây dựng các cấu trúc linh hoạt. Tương tự như hằng, biến và hàm, người dùng có thể định nghĩa các thuộc tính và phương thức của lớp. Swift 4 cung cấp cho chúng ta chức năng mà trong khi khai báo các lớp, người dùng không cần tạo giao diện hoặc tệp thực thi. Swift 4 cho phép chúng ta tạo các lớp dưới dạng một tệp duy nhất và các giao diện bên ngoài sẽ được tạo theo mặc định sau khi các lớp được khởi tạo.

Lợi ích của việc có Lớp học

  • Kế thừa có được các thuộc tính của lớp này sang lớp khác

  • Truyền kiểu cho phép người dùng kiểm tra loại lớp tại thời gian chạy

  • Deinitializers chăm sóc giải phóng tài nguyên bộ nhớ

  • Việc đếm tham chiếu cho phép cá thể lớp có nhiều hơn một tham chiếu

Đặc điểm chung của các lớp và cấu trúc

  • Thuộc tính được xác định để lưu trữ các giá trị
  • Các đăng ký được xác định để cung cấp quyền truy cập vào các giá trị
  • Các phương thức được khởi tạo để cải thiện chức năng
  • Trạng thái ban đầu được xác định bởi trình khởi tạo
  • Chức năng được mở rộng ra ngoài giá trị mặc định
  • Xác nhận các tiêu chuẩn chức năng của giao thức

Cú pháp

Class classname {
   Definition 1
   Definition 2
   --- 
   Definition N
}

Định nghĩa lớp

class student {
   var studname: String
   var mark: Int 
   var mark2: Int 
}

Cú pháp để tạo phiên bản

let studrecord = student()

Thí dụ

class MarksStruct {
   var mark: Int
   init(mark: Int) {
      self.mark = mark
   }
}

class studentMarks {
   var mark = 300
}

let marks = studentMarks()
print("Mark is \(marks.mark)")

Khi chúng tôi chạy chương trình trên bằng sân chơi, chúng tôi nhận được kết quả sau:

Mark is 300

Truy cập thuộc tính lớp dưới dạng tham chiếu

Thuộc tính lớp có thể được truy cập bằng dấu '.' cú pháp. Tên thuộc tính được phân tách bằng dấu '.' sau tên cá thể.

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)")

Khi chúng tôi chạy chương trình trên bằng sân chơi, chúng tôi nhận được kết quả sau:

Mark1 is 300
Mark2 is 400
Mark3 is 900

Toán tử Nhận dạng Lớp

Các lớp trong Swift 4 đề cập đến nhiều hằng số và biến trỏ đến một trường hợp duy nhất. Để biết về các hằng số và các biến trỏ đến một cá thể lớp cụ thể, các toán tử nhận dạng được sử dụng. Các cá thể của lớp luôn được chuyển qua tham chiếu. Trong các lớp, các thể hiện NSString, NSArray và NSDictionary luôn được gán và chuyển xung quanh như một tham chiếu đến một cá thể hiện có, chứ không phải là một bản sao.

Giống hệt nhà điều hành Không giống hệt nhà điều hành
Toán tử được sử dụng là (===) Toán tử được sử dụng là (! ==)
Trả về true khi hai hằng số hoặc biến trỏ đến cùng một trường hợp Trả về true khi hai hằng số hoặc biến trỏ đến một phiên bản khác
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")

spClass1 === spClass2 // false
print("\(spClass1)")

spClass1 !== spClass2 // true
print("\(spClass2)")

Khi chúng tôi chạy chương trình trên bằng sân chơi, chúng tôi nhận được kết quả sau:

main.SampleClass
main.SampleClass