Class trong swift – Swift Classes
Class trong swift – Swift Classes
Giống như các ngôn ngữ lập trình khác, class trong swift là khuôn mẫu để tạo ra đối tượng. Bên trong của một class bao gồm một hoặc nhiều thuộc tính (properties) và một hoặc nhiều phương thức.
Class trong swift được tạo ra và cho phép kế thừa. Điều này có nghĩa là tạo ra một lớp mới để thừa kế các thuộc tính và phương thức từ một lớp khác.
Class trong swift là gì ?
Trong Swift, một class là một kiểu dữ liệu tự định nghĩa cho phép bạn đóng gói dữ liệu và phương thức liên quan vào một đơn vị duy nhất.
Class cung cấp một cách để tạo ra đối tượng (object) – một phiên bản cụ thể của lớp đó – và chứa các thuộc tính (properties) và phương thức (methods) để thao tác với đối tượng đó.
Class cũng hỗ trợ các khái niệm như kế thừa (inheritance), đa hình (polymorphism) và truy cập kiểu tham chiếu (reference type). Nhờ vào class, bạn có thể xây dựng các dự án phức tạp và có cấu trúc trên nền tảng Swift.
Cú pháp
class classname {
// Khai báo thuộc tính
// Khai báo và định nghĩa phương thức (hàm)
}
Ví dụ của class trong swift
class Student {
var studentID: Int = 0
var studentName: String = ""
var mark: Float = 0
}
Cú pháp tạo đối tượng (instance) của class trong swift
let s = Student()
Truy cập thuộc tính (Accessing Class Properties) của class trong swift
Thuộc tính của một class có thể được truy cập bởi cú pháp ‘.‘. Tên thuộc tính của class được phân cách bởi một dấu ‘.’ sau tên của đối tượng (instance name)
class StudentMarks {
// Khai báo thuộc tính
var diemToan = 8
var diemLy = 9
var diemHoa = 10
}
// Tạo thể hiện (object)
let sm = StudentMarks()
// Truy cập các thuộc tính của class
print("Điểm toán là \(sm.diemToan)")
print("Điểm lý là \(sm.diemLy)")
print("Điểm hoá là \(sm.diemHoa)")>
Khi chạy ứng dụng trên, chúng ta sẽ nhận được kết quả sau đây
Điểm toán là 8
Điểm lý là 9
Điểm hoá là 10
Lớp con và lớp cha (Subclass and Superclass) của class trong swift
Khi chúng ta xây dựng một lớp mới kế thừa lớp cũ đã có thì hai lớp này sẽ là lớp con và lớp cha của nhau. Ví dụ chúng ta đã có lớp Person và tạo ra một lớp Employee kế thừa lớp Person.
Trong trường hợp này Person sẽ được gọi là Superclass (lớp cha) và Employee sẽ được gọi là Subclass (lớp con). Một lớp có thể có nhiều lớp con nhưng một lớp thì chỉ được phép có một lớp cha (đơn thừa kế).
Để khai báo một lớp là con của lớp khác thì chúng ta thêm một dấu hai chấm (:). Sau đây là ví dụ
Tạo ra lớp Person
class Person {
var id : Int = 0
var name : String = "Gia Sư Tin Học"
func display () {
print("ID = \(id)")
print("Name = \(name)")
}
}
Tạo ra lớp Employee kế thừa lớp Person
class Employee : Person {
var diploma : String = "Ths"
func show () {
print("Diploma = \(diploma)")
}
func displayInfo() {
super.display()
self.show()
}
}
Tạo ra một thể hiện của lớp Employee
// Tạo đối tượng
let gsth = Employee()
// Gọi phương thức của lớp cha
print("Thông tin hiển thị sử phương thức của lớp Person")
gsth.display() //inheritance from Quadruped
// Gọi phương thức của con
print("Thông tin hiển thị sử dụng phương thức của lớp Employee")
gsth.displayInfo();
Overriding method của class trong swift
Trong Swift, khi một phương thức được kế thừa từ lớp cha và phương thức này được định nghĩa lại ở lớp con thì sẽ được gọi là overriding method. Phương thức đã được định nghĩa lại phải thêm từ khoá override trong phần khai báo. Sau đây là ví dụ:
class DongVat4Chan {
func go () {
print("Di chuyển bằng 4 chân")
}
}
class ConCho : DongVat4Chan {
override func go () {
print("Con chó đi bằng 4 chân")
}
}
Tạo thể hiện và gọi phương thức
let pq = ConCho()
pq.go()
Phương thức khởi tạo (Initialization) của class trong swift
Tương tự như Java, phương thức khởi tạo trong Swift được sử dụng để thiết lập giá trị ban đầu cho các thuộc tính khi tạo thể hiện của class. Trong Swift để khai báo phương thức khởi tạo, chúng ta phải sử dụng từ khoá init
Phương thức khởi tạo không có tham số
Cú pháp
init() {
// Khởi tạo giá trị cho các thuộc tính
}
Ví dụ
class DoF {
var nhietdo: Float
init() {
nhietdo = 23.0
}
}
// Tạo thể hiện
var df = DoF()
// Hiển thị nhiệt độ
print("Nhiệt độ mặc định là \(df.nhietdo)")
Phương thức khởi tạo có tham số
Cú pháp
init (Danh sách tham số) {
// Khởi tạo giá trị cho các thuộc tính theo tham số
}
Ví dụ 1
class DoC {
var nhietdo: Float
init(nd : Float) {
nhietdo = nd
}
}
// Tạo đối tượng
let dc = DoC(nd : 100)
print("Độ C hiện tại là \(dc.nhietdo)")
Ví dụ 2
class MyColor {
var redColor, greenColor, blueColor: Int
init(redColor: Int, greenColor: Int, blueColor: Int) {
self.redColor = redColor
self.greenColor = greenColor
self.blueColor = blueColor
}
}
// Tạo đối tượng
let mc = MyColor(redColor: 255, greenColor: 255, blueColor: 255)
Gọi phương thức khởi tạo của lớp cha
Ví dụ
class NewPerson {
var id : Int
init(id : Int) {
self.id = id
}
}
class NewEmployee : NewPerson {
var name : String
init(id : Int, name : String) {
self.name = name
// Gọi phương thức khởi tạo của lớp cha
super.init(id:id)
}
}
let ne1 = NewEmployee(id: 7, name: "giasutinhoc.vn")
print("Mã nhân viên: \(ne1.id)")
print("Tên nhân viên: \(ne1.name)")
Kết quả hiển thị trong playground
Bài tập thực hành
Tạo ra một ứng dụng sử dụng class và kế thừa để cài đặt một phần mềm. Ứng dụng bao gồm các class sau đây
Lớp Game có các thuộc tính để lưu lại thông tin của người chơi như name, age, gender, …
Lớp TestMatch kế thừa lớp Game và có hàm Float calculateIncome(String numGames) để tính thu nhập của người chơi. Giả sử ở cấp độ Test game có 5 game. Game 1 có số tiền nhận được là 100$, game 2 có số tiền nhận được là 200$, ….Hàm Float calculateBonus(String performance, String grade) để tính tiền thưởng phải dựa vào hiệu suất (performance) trong một trận đấu và hạng (grade). Hiệu suất có bao gồm good, average và best. Hạng có bao gồm A, B và C. Giả sử hiệu suất là good và hạng A vậy thì tiền thưởng là 10$, …
Lớp WorldCup kế thừa của lớp Game và cũng có hàm Float calculateIncome(String numGames) để tính thu nhập và hàm Float calculateBonus(String performance, String grade) tiền thưởng của người chơi đang ở cấp độ WorldCup. Cách tính thu nhập và tiền thưởng giống TestMatch tuy nhiên số tiền sẽ cao hơn.
Lớp Player có một hàm displayDetails(String match) để hiển thị các thông tin của người chơi. Trong hàm displayDetails(String match) sẽ gọi hàm calculateIncome() và calculateBonus() của lớp TestMatch hoặc lớp WorldCup dựa vào match và được chỉ định bởi người dùng.
Tổng kết
Như vậy, qua bài viết về class trong swift trên đây, R2S chúng tôi đã giúp bạn hiểu được về lớp, đối tượng, thuộc tính, kế thừa, định nghĩa lại phương thức, phương thức khởi tạo
Đừng quên bỏ lỡ bất cứ bài viết nào của chúng tôi để học thêm nhiều kiến thức hữu ích về lập trình giao diện trong lập trình swift nhé.
Hãy đến website của R2S để có thể tìm hiểu sâu hơn vào lập trình và công nghệ thông tin để có thêm nhiều kiến thức về nó hơn nha.
Bài viết gốc được đăng tải tại giasutinhoc.vn