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,
vehicle
mendefinisikan 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();
}
}
Car
adalah 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
, objekCar
danBike
dibuat. - 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