Implementasi Beberapa Antarmuka
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Java di Coddy. Pelajaran 36 dari 87.
Tidak seperti pewarisan class yang hanya memungkinkan kamu memperluas satu class, Java memungkinkan sebuah class mengimplementasikan beberapa interface. Dengan cara ini, Java mewujudkan bentuk pewarisan berganda dengan aman.
Untuk mengimplementasikan beberapa antarmuka, cantumkan semuanya setelah kata kunci implements, pisahkan dengan koma:
public interface Drawable {
void draw();
}
public interface Resizable {
void resize(int width, int height);
}
public class Rectangle implements Drawable, Resizable {
private int width, height;
public Rectangle(int width, int height) {
this.width = width;
this.height = height;
}
@Override
public void draw() {
System.out.println("Drawing rectangle " + width + "x" + height);
}
@Override
public void resize(int width, int height) {
this.width = width;
this.height = height;
}
}class harus mengimplementasikan semua method dari setiap interface yang dideklarasikannya. Kamu juga bisa menggabungkan pewarisan dengan beberapa interface:
public class Square extends Shape implements Drawable, Resizable {
// Harus mengimplementasikan method dari kedua interface
// Juga bisa menggunakan anggota yang diwarisi dari Shape
}Fleksibilitas ini memungkinkan kamu merancang class yang memenuhi beberapa peran. SmartPhone dapat mengimplementasikan antarmuka Callable, Messageable, dan Browsable, yang masing-masing mendefinisikan kemampuan berbeda yang didukung ponsel tersebut.
Tantangan
MudahMari buat sistem perangkat pintar yang memungkinkan perangkat memiliki beberapa kemampuan. Kamu akan membuat SmartTV yang dapat dinyalakan dan dimatikan serta volume-nya dapat diatur. Ini menunjukkan bagaimana satu class dapat mengimplementasikan beberapa interface untuk menjalankan peran yang berbeda.
Kamu akan mengatur kodemu dalam empat file:
Powerable.java: Definisikan interface untuk perangkat yang dapat dinyalakan. Interface ini harus mendeklarasikan dua method:powerOn()danpowerOff(), yang keduanya mengembalikan void.VolumeControl.java: Definisikan interface untuk perangkat yang memiliki pengaturan volume. Interface ini harus mendeklarasikan methodsetVolume(int level)yang mengembalikan void, dan methodgetVolume()yang mengembalikan int.SmartTV.java: Buat class yang mengimplementasikan interfacePowerabledanVolumeControl.SmartTV-mu harus memiliki fieldbrand(String), fieldisOn(boolean, awalnya false), dan fieldvolume(int, awalnya 0). Sertakan constructor yang menerima nama merek. Implementasikan semua method yang diwajibkan:powerOn()harus mengaturisOnmenjadi true dan mencetak:[brand] TV is now ONpowerOff()harus mengaturisOnmenjadi false dan mencetak:[brand] TV is now OFFsetVolume(int level)harus memperbarui volume dan mencetak:[brand] TV volume set to [level]getVolume()harus mengembalikan volume saat ini
Main.java: Gabungkan semuanya untuk menunjukkan implementasi beberapa interface. Kamu akan menerima dua input: nama merek (String) dan tingkat volume (int). BuatSmartTVdengan merek yang diberikan, lalu:- Panggil
powerOn() - Panggil
setVolume()dengan tingkat yang diberikan - Cetak:
Current volume: [volume]menggunakangetVolume() - Panggil
powerOff()
- Panggil
Kamu akan menerima dua input: merek TV (String) dan tingkat volume (int).
Output-mu harus menampilkan empat baris yang menunjukkan cara SmartTV-mu memenuhi kedua kontrak interface. Perangkat ini dapat dinyalakan dan dimatikan seperti perangkat Powerable lainnya, serta volumenya dapat diatur seperti perangkat VolumeControl lainnya!
Coba sendiri
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Baca input
String brand = scanner.nextLine();
int volumeLevel = scanner.nextInt();
// TODO: Buat SmartTV dengan merek yang diberikan
// TODO: Panggil powerOn()
// TODO: Panggil setVolume() dengan tingkat yang diberikan
// TODO: Cetak: Current volume: [volume] menggunakan getVolume()
// TODO: Panggil powerOff()
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalPengantar OOPClass dan ObjectKata Kunci thisMethodField (Atribut)Method KonstruktorOverloading KonstruktorRangkuman: Kalkulator Sederhana4Pewarisan
Pewarisan Dasar (extends)Kata Kunci superMethod Overriding (@Override)Rantai KonstruktorKelas ObjectPewarisan Tunggal dan BertingkatMengapa Tidak Ada Pewarisan Multi-KelasRangkuman: Hierarki Karyawan7method Khusus & class Object
method toString()equals() dan hashCode()method clone()compareTo() dan ComparableAntarmuka ComparatorUlasan: Pengurutan Kustom10Penanganan Exception dalam OOP
Hierarki class ExceptionException KustomError Checked vs UncheckedPola Try-with-ResourcesRekap: Pengguna Tervalidasi2Modifier Akses & Enkapsulasi
Ikhtisar Tingkat AksesMethod Getter dan SetterPenyembunyian InformasiKata Kunci finalUlasan: Pengelola Rekening Bank5Polimorfisme
Dasar method overloadingMethod overriding (Saat program berjalan)Upcasting dan downcastingOperator instanceofclass dan method abstrakUlasan: Kalkulator Bentuk8Konsep OOP Lanjutan
Komposisi vs PewarisanAgregasi vs Komposisiinner, nested, dan anonymous classEnum dan method Enumrecord (Java 16+)sealed class (Java 17+)11Pola Desain Bagian 1
Pengantar Pola DesainPola SingletonPola FactoryPola BuilderPola ObserverPola Strategy3property class dan Anggota Statis
Variabel Instance vs Statismethod StatisBlok StatisKonstanta (static final)Rangkuman: Penghitung dan Utilitas6Antarmuka & Kelas Abstrak
Pengantar AntarmukaMengimplementasikan AntarmukaImplementasi Beberapa AntarmukaDefault & Static pada AntarmukaKelas Abstrak vs AntarmukaAntarmuka FungsionalRekap: Sistem PembayaranLatihan sendiri: Compiler Java online