Saat membaca berbagai pertanyaan Stack Overflow dan kode orang lain, konsensus umum tentang cara merancang kelas ditutup. Ini berarti bahwa secara default di Java dan C # semuanya bersifat pribadi, bidang bersifat final, beberapa metode bersifat final, dan terkadang kelas bahkan final .
Gagasan di balik ini adalah untuk menyembunyikan detail implementasi, yang merupakan alasan yang sangat bagus. Namun dengan adanya protected
sebagian besar bahasa OOP dan polimorfisme, ini tidak berhasil.
Setiap kali saya ingin menambah atau mengubah fungsionalitas ke kelas saya biasanya terhalang oleh pribadi dan akhir ditempatkan di mana-mana. Di sini detail implementasi penting: Anda mengambil implementasi dan memperluasnya, mengetahui sepenuhnya apa konsekuensinya. Namun karena saya tidak bisa mendapatkan akses ke bidang dan metode pribadi dan terakhir, saya punya tiga opsi:
- Jangan memperluas kelas, hanya menyelesaikan masalah yang mengarah ke kode yang lebih kompleks
- Salin dan tempel seluruh kelas, matikan penggunaan kembali kode
- Garap proyek
Itu bukan pilihan yang baik. Mengapa tidak protected
digunakan dalam proyek yang ditulis dalam bahasa yang mendukungnya? Mengapa beberapa proyek secara eksplisit melarang pewarisan dari kelas mereka?