Saya mencoba mencari cara terbaik untuk menyelesaikan masalah ini dalam proyek yang sedang saya kerjakan. Saya akan memberikan analogi masalahnya:
Ada kelas, Mobil. Dari Mobil, saya membuat 3 kelas yang memperluasnya:
- Limo memperluas Mobil
- Truk memperluas Mobil
- Bus memperluas Mobil
Sekarang, katakanlah saya menyadari bahwa seseorang lupa memasukkan metode getSpeed() ke kelas Mobil, dan saya perlu menambahkannya. Namun, Saya tidak dapat memodifikasi kelas Mobil dengan cara apa pun, dan 3 kelas tersebut harus memperluas Mobil. Bagaimana cara terbaik untuk menambahkan fungsi umum ke 3 kelas ini tanpa harus menyalin kode tempel bolak-balik? Implementasi metode getSpeed() sama untuk setiap kelas, jadi saya ingin sesuatu seperti kelas abstrak, namun tetap dapat mempertahankan kelas tersebut sebagai perluasan Car.
Ini adalah contoh satu-satunya cara saya mengatasinya sejauh ini, tetapi saya ingin tahu apakah ada cara yang lebih baik:
public class Limo extends Car {
CarSpeed cs;
public Limo() {
cs = new CarSpeed(this);
}
}
dan membuat kelas CarSpeed berisi metode getSpeed() yang sebenarnya.
Apakah ada cara yang lebih bersih untuk melakukan ini yang tidak saya sadari? Saya juga hanya bisa bekerja di Java 7, jadi saya rasa saya tidak bisa menggunakan kata kunci default (bukan berarti saya sudah cukup membacanya untuk mengetahui apakah itu berlaku untuk situasi ini :( )