Dart Interface Classes
Dalam Dart, untuk mebuat calss interface dalam dart kita bisa mengunakan kata kunci interface. Meskipun pada dart, setiap class secara implisit adalah sebuah interface. Ini berarti kita dapat menggunakan kata kunci implements pada sebuah class untuk mengimplementasikan interface dari class lain.
- Ketika sebuah class mengimplementasikan sebuah interface, ia harus menyediakan implementasi (body) untuk semua properti dan method dari interface tersebut.
- Ini berguna untuk memastikan sebuah class memenuhi “kontrak” tertentu, tanpa perlu mewarisi implementasinya.
Buat file dengan nama InterfaceClass.dart
interface class vehicle {
void startEngine() {
print("Engine started");
}
void stopEngine() {
print("Engine stopped");
}
}
// Extending the interface class
class Car extends vehicle {
@override
void startEngine() {
super.startEngine();
}
@override
void stopEngine() {
super.stopEngine();
}
}
// Another class implementing the interface class
class Bike implements vehicle {
@override
void startEngine() {
print("Bike engine started");
}
@override
void stopEngine() {
print("Bike engine stopped");
}
}
// Main function to demonstrate the usage
void main() {
print("Interface Class Extends:");
var myCar = Car();
myCar.startEngine();
myCar.stopEngine();
print("Interface Class Implements:");
var myBike = Bike();
myBike.startEngine();
myBike.stopEngine();
}
Contoh Output:
$ dart run InterfaceClass.dart
Interface Class Extends:
Engine started
Engine stopped
Interface Class Implements:
Bike engine started
Bike engine stopped
Penjelasan Kode: Interface Class di Dart
1. Interface Class vehicle
interface class vehicle {
void startEngine() {
print("Engine started");
}
void stopEngine() {
print("Engine stopped");
}
}
- interface class adalah fitur baru di Dart yang memungkinkan sebuah class hanya bisa di-extend atau di-implement oleh class lain, tapi tidak bisa di-instansiasi langsung.
- Pada contoh di atas,
vehiclemendefinisikan dua method:startEngine()danstopEngine(), yang masing-masing mencetak pesan ke konsol.
2. Extending Interface Class: Car
class Car extends vehicle {
@override
void startEngine() {
super.startEngine();
}
@override
void stopEngine() {
super.stopEngine();
}
}
Caradalah class yang mewarisi (extends) darivehicle.- Method
startEngine()danstopEngine()di-override untuk menunjukkan bahwa class turunan bisa mengubah atau menambah perilaku dari method parent-nya. - Pada contoh ini, method hanya memanggil method dari parent (
super.startEngine()), tapi bisa dikembangkan sesuai kebutuhan.
3. Implementasi Lain: Bike
class Bike extends vehicle {
@override
void startEngine() {
super.startEngine();
}
@override
void stopEngine() {
super.stopEngine();
}
}
Bike juga mewarisi dari vehicle dan meng-override kedua method dengan cara yang sama seperti Car.
4. Fungsi Main
void main() {
var myCar = Car();
myCar.startEngine();
myCar.stopEngine();
var myBike = Bike();
myBike.startEngine();
myBike.stopEngine();
}
- Pada fungsi
main, objekCardanBikedibuat. - Setiap objek memanggil method
startEngine()danstopEngine(), sehingga akan mencetak pesan ke konsol.
Kesimpulan
- interface class di Dart sangat berguna untuk membuat kontrak perilaku yang harus diikuti oleh class turunan.
- Tidak bisa membuat objek langsung dari
vehicle, tapi bisa membuat objek dari class turunannya (Car,Bike). - Cocok digunakan untuk arsitektur aplikasi yang membutuhkan konsistensi perilaku pada beberapa class turunan.
Sample source code bisa di download di github pada link berikut dart-tutorial