Inheritance, Method Overriding & Static Method

Run Settings
LanguageJavascript
Language Version
Run Command
/* Incheritance (pewarisan) adalah sebuah solusi yang bisa digunakan utk mempermudah dalam membuat membuat properti dan method. contoh class yang memiliki properti dan method serupa adalah pesawat, mobil dan motor. didalam body class ketiga nya memiliki manufacture, info() dan color(). Jika tanpa inheritance, setiap kali kita membuat class baru, maka kita akan mebuat manufactrue, info() dan color secara berulang yang diamana itu akan membuat pekerjaan kita jadi lebih lama, tapi dgn Inheritance kita bisa mncegah melakukan perulangan kode dan mengelompokkan properti dan method yang sama. Caranya dengan membuat sebuah class induk atau class baru yang nantinya akan diturunkan sifatnya pada class anak JavaScript jika kita ingin mewariskan sifat class, lakukan dengan keyword extends seperti berikut: class ChildClass extends ParentClass { } Sebagai contoh mari kita buat class Vehicle yang nantinya akan kita gunakan sebagai parent class atau class induk : */ class Vehicle{ constructor(licensePlate, manufacture){ this.licensePlate = licensePlate; this.manufacture = manufacture; this.engineActive = false; } // menambahkan method startEngines(){ console.log(`Mesin ${this.manufacture} ${this.licensePlate} dinyalakan!`) } info(){ console.log(`Nomor Kendaraan: ${this.licensePlate}`); console.log(`Manufacture: ${this.manufacture}`); console.log(`Mesin: ${this.engineActive? "Active" : "Inactive"}`); } parking(){ console.log(`Kendaraan ${this.licensePlate}`); } } //Kemudian kita bisa membuat class Car sebagai class anak dari class Vehicle /* JavaScript jika kita ingin mewariskan sifat class, lakukan dengan keyword extends arti dibawah : class Car sebagai class anak mewairisi class Vehicle sbg class induk */ class Car extends Vehicle{ constructor(licensePlate, manufacture, wheels){ super(licensePlate, manufacture); this.wheels = wheels; } /* Keyword super pada constructor diats digunakan untuk mengakses properti dan method yang ada pada induk class ketika berada pada class anak Jadi super(lisencePlate, manufacture) di atas berarti kita mengakses constructor dari parent class dan mengirimkan lisencePlate, dan manufacture sebagai data yang dibutuhkan olehnya agar objek (instance) Car berhasil dibuat.*/ // membuat method driveOff(){ console.log(`Kendaraan ${this.licensePlate}`); } // membuat method openDoor(){ console.log(`Membuka pintu!`); } /* Method Overriding dilakukan saat kita ingin membuat ulang sebuah method pada sub-class atau class anak. Untuk melakukan method overriding, kita tambahkan super diikuti dot didepan method class induk nya. Dibawah ini kita akan melakukan method overriding pada method info() dengan menambahkan informasi jumlah roda pada mobil */ info(){ super.info(); console.log(`Jumlah roda: ${this.wheels}`); } } /* Dengan begitu selain properti dan method yang terdapat di dalamnya, class Car juga dapat mengakses seluruh properti dan method yang terdapat pada class Vehicle. */ /* Static Method Dalam dunia nyata, sebuah kendaraan memerlukan perawatan atau perbaikan apabila terjadi kerusakan dan perawatan atau perbaikan kendaraan biasanya dilakukan di bengkel (factory). Maka dari itu, seklanjutnya kita akan membuat bengkel (class VehicleFactory) dan mengisinya dengan method repair() : */ class VehicleFactory{ repair(vehicle){ vehicle.forEach(vehicle=>{ console.log(`Kendaraan ${vehicle.licensePlate} sedang diperbaiki`); }); } /* agar method atau fungsi dari class dibawah ini bisa langusng diakses tanpa membuat inheritance, kita bisa menggunakan static method dengan cara menambahkan static keyword sebelum deklarasi method-nya seperti dibawah ini */ static perbaiki(vehicle){ vehicle.forEach(vehicle=>{ console.log(`Kendaraan ${vehicle.licensePlate} sedang diperbaiki`); }); } } function br(){ console.log(""); } //membuat objek dari class Car const wulingCar = new Car("Cortez", "Wuling", 4); const toyotaCar = new Car("Fortuner", "Toyota", 4); wulingCar.startEngines(); wulingCar.info(); br(); toyotaCar.startEngines(); toyotaCar.info(); /* Seandaa nya kita tidak melakukan method overriding pada method info(), maka info yang akan ditampilkan hanya berupa: Nomor Kendaraan: Cortez Manufacture: Wuling Mesin Inactive Informasi mengenai jumlah roda tidak ditampilkan*/ // membuat instance untuk mengakses //method repair() dari class VehicleFactory const vehicleFactory = new VehicleFactory(); br(); vehicleFactory.repair([wulingCar, toyotaCar]); // memanggil method secara langsung dari class VehicleRepair tanpa membuat // inheritance menggunakan static method br(); VehicleFactory.perbaiki([wulingCar, toyotaCar]);
Editor Settings
Theme
Key bindings
Full width
Lines