Override dalam Swift

Kamu akan menguasai kata super dan override pada artikel ini. Banyak pemula kurang memahami ini karena mereka hanya copy-paste dari StackOver Flow dan tutorial yang ditemukan di mbah Google. Ya, termasuk saya juga ✌️. Tapi mulai sekarang kita harus memahaminya.
Oke sekarang buka Playground Kamu, yo kita belajar bersama.
Contoh UIViewController
import UIKit
class MyViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
print("Hello")
}
}Penting: Fungsi
viewDidLoad()berjalan secara otomatis oleh kelas UIViewController.
Vehicle Class
Buat kelas Vehicle yang berisi satu properti gettable dan satu fungsi.
class Vehicle {
var description: String {
return "Hello, I'm moving at 300km/hr"
}
func warning() {
print("Be careful, I'm going very fast")
}
}Override Fungsi dan Properti
Buat kelas ToyCar yang inherit dari Vehicle. Kamu dapat mengkustomisasi properti dan fungsi yang diinherit dengan memasukkan override. Kamu dapat mengakses properti dan fungsi yang diinherit dengan memanggil super.
class Ferrari: Vehicle {
override var description: String { // you overriding description from Vehicle
return "\(super.description) hey, I'm a cool car"
}
override func warning() { // you overriding warning method from Vehicle
print("hello, don't mind me")
super.warning() // you call warning method from super class (Vehicle)
}
}Sekarang kita coba akses properti description dan fungsi warning dari Ferrari.
let myFutureCar = Ferrari() myFutureCar.description // "Hello, I'm moving at 300km/hr hey I'm a cool car" myFutureCar.warning() // "hello, don't mind me" // "Be careful, I'm going pretty fast"
Super Init
Kamu dapat mengganti fungsi init dari super class. Ingat, setiap properti harus diinisialisasi, bahkan yang dari super class.
Sekarang buatlah class yang berisi properti origin.
class Human {
var origin: String = "Japanese"
init(enterOrgin: String) {
origin = enterOrgin
}
}Subclass
Buat subclass Indonesian yang inherit dari class Korea berisi properti name. Namun, ketika Kamu menginisialisasi, Kamu harus menginisialisasi properti asal dari Human dengan memanggil super.init.
class Indonesian: Human {
let name: String
init(enterName: String) {
self.name = enterName
super.init(enterOrgin: "Indonesian")
}
init(enterName: String, origin: String) {
self.name = enterName
super.init(enterOrgin: origin)
}
}Buat Object
Ada dua metode init di kelas Indonesian. Kamu dapat memilih salah satu karena keduanya menginisialisasi properti asal dari kelas Human.
let budi = Indonesian(enterName: "Budi") budi.origin // Indonesian budi.name // Budi let doremi = Indonesian(enterName: "Doremi", origin: "Indonesian") doremi.origin // Indonesian doremi.name //Doremi
Override Init
Kamu tidak hanya dapat override fungsi dan properti, tetapi juga fungsi init.
Base Class
Buat Kelas Tesla yang memiliki property numberOfWheels.
class Tesla {
var numberOfWheels: Int
init(enterWheelNumber: Int) {
numberOfWheels = enterWheelNumber
}
}Subclass
Buat subclass ModelS yang inherit dari Tesla. Tambahkan override di depan metode init dan panggil super.init untuk menginisialisasi properti dari kelas Tesla. Setelah Kamu menginisialisasi properti, Kamu dapat menambahkan kode tambahan untuk penyesuaian.
class ModelS: Tesla {
override init(enterWheelNumber: Int) {
super.init(enterWheelNumber: enterWheelNumber)
print("Wow, you've got a nice car")
}
}
Model(enterWheelNumber: 50) // Wow, you've got a nice carMulai sekarang, Kamu tidak perlu lagi takut lagi super.init, super.viewDidLoad, dan `override. Jika Kamu merasa bingung, saya sarankan Kamu untuk membaca tulisan ini beberapa kali dan mungkin mengajukan pertanyaan dibawah jika perlu. Kamu harus memahami setiap informasi dari sini. Jika tidak, Kamu akan sakit kepala ketika bertemu dengan kasus ini di project Kamu.
Semoga bermanfaat.
