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