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 car
Mulai 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.