TÍNH HƯỚNG ĐỐI TƯỢNG TRONG SWIFT Trong hướng dẫn tính chất hướng đối tượng Swift Tương tự ngôn ngữ khác swift có đầy đủ tính hướng đối tượng : kế thừa, trừu tượng, đóng gói, đa hình Trong hướng dẫn tính kế thừa tính đa hình, hướng dẫn sau hướng dẫn cho tính chất lại Mình vễ tiếp tục sử dụng playground để test code -Tính kế thừa Swift : Nó cho phép lớp thừa kế thừa hưởng thuộc tính phương thức lớp thừa kế Nó cho phép thừa kế protocol, class trừu tượng class bình thường Nó kế thừa class, nhiều protocol Khai báo tổng quát: class A{ } class kế thừa sử dụng dấu : + class B:A{} class B kế thừa class A + Kế thừa hàm khởi tạo sử dụng từ khoá super.init(tham số or tham số) ví dụ: Student kế thừa từ people Khi people có tất thuộc tính phương thức lớp student class student thêm phương thức thuộc tính riêng thêm funcStudentInfor() class people { var name:String = “” var age:Int = var address = “” init(name:String,age:Int,address:String){ self.name=name self.age=age self.address=address } init(){ } } class student: people{ private var id = “” override init(){ super.init() } init(id:String,name:String,age:Int,address:String){ super.init(name: name, age: age, address: address) self.id=id } func StudentInfor() { print(“this is student!”) } } -Tính đa hình swift: Tính đa hình thể đặc điểm Overloading Overriding: Ta hiểu tính đa hình đối tượng trường hợp, hoàn cảnh khác nhau, đối tượng có khả thực thi hành vi, hành xử khác Đa hình có mức bản: Data Type (kiểu liệu) Method (phương thức) Trong lập trình hướng đối tượng, Data Type thể Interface Method thể overloading (nạp chồng) Overloading: phương thức có tên khác tham số truyền vào Overriding: (Ghi đè)là phương thức có tên, tham số truyền vào, kiểu giá trị trả với phương thức lớp cha! Đó phương thức xuất lớp cha viết lại lớp Lưu ý : không ghi đè thuộc tính ghi đè phương thức Ví dụ: class sau: – Trong class people có hàm khởi tạo init() không tham số, init(name:String,age:Int,address:String ) có tham số, có hàm infor() – Trong class student: Overloading: hàm khởi tạo có tham số init(có tham số) init(id:String,name:String,age:Int,address:String){ super.init(name: name, age: age, address: address) self.id=id } Overriding: hàm khởi tạo tham số: override init(){ super.init() } hàm infor(): override func infor() { let info:String = “Id \(id) Name: \(name) Age: \( age) Address \(address)” print(info) } Nếu ta không override hàm class people gọi kế thừa student chắn people class people { var name:String = “” var age:Int = var address = “” init(name:String,age:Int,address:String){ self.name=name self.age=age self.address=address } init(){ } func infor() { let info:String = “Name: \(name) Age: \( age) Address \(address)” print(info) } } class student: people{ private var id = “” override init(){ super.init() } init(id:String,name:String,age:Int,address:String){ super.init(name: name, age: age, address: address) self.id=id } override func infor() { let info:String = “Id \(id) Name: \(name) Age: \( age) Address \(address)” print(info) } func StudentInfor() { print(“this is student!”) } } ví dụ:gọi đối tượng var s = student(id: “12”, name: “binh”, age: 22, address: “thanh hoa”) s.infor() đưa ta thông tin đối tượng