JavaRush /Java Blog /Random-ID /Pertanyaan dan Jawaban: Apakah mungkin untuk mendefinisik...

Pertanyaan dan Jawaban: Apakah mungkin untuk mendefinisikan metode abstrak di kelas akhir?

Dipublikasikan di grup Random-ID
Pertanyaan menarik dan penting ini ditanyakan kepada salah satu pembaca saya selama wawancara telepon untuk posisi pengembang Java. Meskipun dia tahu bahwa tidak mungkin membuat kelas abstrak finaldalam bahasa Java , dia bingung dengan susunan kata dari pertanyaannya. Jawabannya sederhana: tidak, finaltidak mungkin ada metode abstrak di kelas -. Mengapa? Karena begitu Anda mendeklarasikan metode abstrak pada kelas bahasa Java, otomatis kelas tersebut menjadi abstrak, dan finalAnda tidak dapat membuat kelas abstrak dalam bahasa Java. finalArtinya tidak boleh ada metode abstrak di kelas Java.
Pertanyaan dan Jawaban: Apakah mungkin untuk mendefinisikan metode abstrak di kelas akhir?  - 1
Banyak pengembang Java yang bingung ketika menjawab pertanyaan ini karena kata-katanya. Meskipun orang yang mengajukan pertanyaan sudah familiar dengan konsep umum, dia mungkin tidak menyadari bahwa suatu kelas, setelah mendeklarasikan metode abstrak di dalamnya, menjadi abstrak, dan Anda tidak dapat membuat kelas abstrak finaldi Java. Poin ini memisahkan pertanyaan ini dari pertanyaan yang lebih umum dan sering diajukan: apakah mungkin di Java mendeklarasikan suatu kelas menjadi abstrak dan final pada saat yang bersamaan? Mari kita lihat salah satu contoh kode untuk menunjukkan bahwa finaltidak mungkin mendeklarasikan metode abstrak di kelas -. Mari Hello.javakita punya public finalkelas bernama Hello, yang memiliki metode abstrak print().
public final class Hello {
  public abstract void print();
}
Ketik kode ini ke dalam IDE, Anda akan menerima pesan kesalahan berikut, katanya Helloharus kelas abstrak agar metode abstrak dapat dideklarasikan di dalamnya.
Pertanyaan dan Jawaban: Apakah mungkin untuk mendefinisikan metode abstrak di kelas akhir?  - 2
Pertanyaan dan Jawaban: Apakah mungkin untuk mendefinisikan metode abstrak di kelas akhir?  - 3
Hal yang sama akan terjadi jika Anda mengetik kode ini di Notepad dan mengkompilasinya menggunakan utilitas javac dari baris perintah. Menurut spesifikasi Java, segera setelah Anda mendeklarasikan metode abstrak di dalam suatu kelas, kelas tersebut menjadi kelas abstrak, dan karena Anda tidak dapat membuat kelas abstrak finaldi Java, kompiler akan menghasilkan kesalahan. Hal ini berlaku untuk kelas tingkat atas dan kelas bersarang dalam bahasa Java. Bahkan jika Anda mendeklarasikan metode abstrak di finalkelas bersarang, kesalahannya akan tetap sama. Pertanyaan terkait lainnya adalah: bisakah kelas abstrak di Java memiliki metode statis? Jawaban: ya, bisa, tidak ada masalah dengan mendeklarasikan metode statis di kelas abstrak, karena untuk menggunakan metode statis Anda tidak perlu membuat instance kelas, mereka dapat dipanggil cukup menggunakan nama kelas. Kita dapat memodifikasi contoh kita untuk memasukkan Hellometode ke dalam kelas main(), yang bersifat statis di Java, seperti yang ditunjukkan di bawah ini:
public abstract class Hello {
  public abstract void print();
  public static void main(String args[]) {
     // Howой-то code
  }
}
Seperti yang Anda lihat, tidak ada kesalahan kompilasi yang terjadi. Kode ini dapat dikompilasi tanpa masalah, karena di Java Anda dapat mendeklarasikan metode statis dengan aman di kelas abstrak. Kesimpulan singkat Tidak mungkin mendeklarasikan metode abstrak di kelas final-. Karena begitu Anda melakukan ini, otomatis kelas menjadi abstrak, sesuai spesifikasi Java. Dan karena finalkelas - di Java tidak boleh abstrak, hal ini tidak dapat diterima, dan kompiler akan melarang Anda melakukan ini dengan membuat kesalahan. Tapi Anda bisa mendeklarasikan metode statis baik di kelas final maupun abstrak, tidak ada masalah dengan ini.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION