Ya bisa. Namun, hanya boleh ada satu kelas tingkat atas publik per .javafile, dan kelas tingkat atas publik harus memiliki nama yang sama dengan file sumber.
Tujuan menyertakan beberapa kelas dalam satu file sumber adalah untuk menggabungkan fungsionalitas dukungan terkait (struktur data internal, kelas dukungan, dll) bersama dengan kelas publik utama. Perhatikan bahwa tidak masalah untuk tidak melakukan ini - satu-satunya efek adalah pada keterbacaan (atau tidak) kode Anda.
Saya pikir itu adalah ide yang baik untuk melakukannya jika Anda ingin menjaga kelas tambahan itu pribadi, sehingga mereka dapat sepenuhnya diubah nanti tanpa merusak apa pun di luar yang secara tidak sengaja menggunakan kelas-kelas itu.
Erich Kitzmueller
3
Ada di sana untuk kompatibilitas 1.0 (sebelum kelas bersarang). Itu adalah kesalahan besar dalam bahasa tersebut. Keuntungan terbesar untuk menggunakannya adalah IDE memiliki penanganan file yang sia-sia.
Tom Hawtin - tackline
25
Satu kelas publik tingkat atas per file. Bisa ada sebanyak mungkin kelas dalam publik per file yang Anda inginkan.
erickson
@ Tom, bagian mana yang menurut Anda merupakan kesalahan, kelas dalam atau beberapa kelas tingkat atas per file?
finnw
@finnw Beberapa kelas tingkat atas per file. Itu salah. Dimana java.awt.LightweightDispatcher?
Tom Hawtin - tackline
17
Jika Anda ingin mengimplementasikan kelas publik, Anda harus mengimplementasikannya dalam file dengan nama yang sama dengan kelas itu. Satu file dapat berisi satu publik dan secara opsional beberapa kelas privat. Ini berguna jika kelas hanya digunakan secara internal oleh kelas publik. Selain itu kelas publik juga dapat berisi kelas dalam.
Meskipun tidak masalah untuk memiliki satu atau lebih kelas privat dalam satu file sumber, saya akan mengatakan bahwa lebih mudah dibaca untuk menggunakan kelas dalam dan anonim sebagai gantinya. Misalnya seseorang dapat menggunakan kelas anonim untuk mendefinisikan kelas Pembanding di dalam kelas publik:
Ini bukan kelas privat jika ada dalam file tanpa pengubah. Anda tidak dapat memiliki kelas privat tanpa kelas dalam karena jika Anda melakukannya, siapa yang dapat menggunakannya?
File .java disebut unit kompilasi. Setiap unit kompilasi dapat berisi sejumlah kelas dan antarmuka tingkat atas. Jika tidak ada tipe tingkat atas publik maka unit kompilasi dapat diberi nama apa saja.
//Multiple.java//preceding package and import statementsclassMyClass{...}interfaceService{...}...//No public classes or interfaces...
Hanya ada satu kelas / antarmuka publik dalam unit kompilasi. Cu harus dinamai persis seperti jenis tingkat atas publik ini.
//Test.java//named exactly as the public class TestpublicclassTest{...}//!public class Operations{...}interfaceSelector{...}...//Other non-public classes/interfaces
Selain kelas dalam anonim, penggunaan lain adalah kelas dalam pribadi yang mengimplementasikan antarmuka publik ( lihat artikel ini ). Kelas luar dapat mengakses semua bidang pribadi dan metode kelas dalam.
Ini memungkinkan Anda membuat dua kelas yang berpasangan erat, seperti model dan tampilannya, tanpa mengekspos implementasi keduanya. Contoh lain adalah koleksi dan iteratornya.
Secara umum, harus ada satu kelas per file. Jika Anda mengaturnya seperti itu, maka ketika Anda mencari kelas, Anda tahu Anda hanya perlu mencari file dengan nama itu.
Pengecualiannya adalah saat kelas paling baik diimplementasikan menggunakan satu atau lebih kelas pembantu kecil. Biasanya, kode paling mudah diikuti jika kelas-kelas tersebut ada di file yang sama. Misalnya, Anda mungkin memerlukan kelas pembungkus 'tuple' kecil untuk meneruskan beberapa data di antara panggilan metode. Contoh lainnya adalah kelas 'tugas' yang mengimplementasikan Runnable atau Callable. Mereka mungkin sangat kecil sehingga paling baik digabungkan dengan kelas induk yang membuat dan memanggil mereka.
Ya bisa, tetapi hanya ada 1 kelas publik di dalam paket apa pun karena kompiler java membuat file .Class yang memiliki nama yang sama dengan nama kelas Publik oleh karena itu jika mereka lebih dari 1 kelas publik akan sulit untuk dipilih kompiler yang seharusnya menjadi nama file Kelas.
Anda harus menanyakan ini sebagai pertanyaan daripada menjawab di sini.
Ashish Kumar
1
Jika Anda ingin mengimplementasikan singleton, yaitu kelas yang berjalan di program Anda dengan hanya satu instance di memori selama eksekusi aplikasi, maka salah satu cara untuk mengimplementasikan singleton adalah dengan menyarangkan kelas statis privat di dalam kelas publik . Kemudian kelas privat bagian dalam hanya membuat instance sendiri ketika metode publiknya untuk mengakses instance privat dipanggil.
Dalam file .java, hanya ada satu kelas tingkat atas publik yang namanya sama dengan file tersebut, tetapi mungkin ada beberapa kelas dalam publik yang dapat diekspor ke semua orang dan mengakses bidang / metode kelas luar, misalnya : AlertDialog.Builder (dimodifikasi oleh 'public static') di AlertDialog (dimodifikasi oleh 'public')
Ya Anda dapat memiliki lebih dari satu Kelas dalam satu file .Java. Tapi Anda telah membuat salah satunya menjadi Publik. dan simpan file .java dengan nama yang sama dengan nama kelas publik. ketika Anda akan mengkompilasi file .java itu daripada Anda akan mendapatkan file .class terpisah untuk setiap kelas yang didefinisikan dalam file .java.
Selain itu, ada terlalu banyak metode untuk mendefinisikan lebih dari satu kelas dalam satu file .java.
Saya tidak yakin dari tanggapan Anda menambahkan apa-apa lagi dari 12 jawaban lainnya
goto
1
Ya, Anda dapat memiliki lebih dari satu kelas di dalam file .java. Paling-paling salah satu dari mereka bisa menjadi publik. Yang lainnya bersifat paket-pribadi. Mereka TIDAK BISA bersifat pribadi atau dilindungi. Jika salah satunya adalah publik, file tersebut harus memiliki nama kelas itu. Jika tidak, APA SAJA dapat diberikan ke file itu sebagai namanya.
Memiliki banyak kelas di dalam satu file berarti kelas-kelas tersebut berada dalam paket yang sama. Jadi kelas lain yang ada di dalam paket itu tetapi tidak di file itu juga bisa menggunakan kelas-kelas itu. Selain itu, ketika paket itu diimpor, kelas pengimpor juga dapat menggunakannya.
Untuk penyelidikan lebih rinci, Anda dapat mengunjungi posting blog saya di sini .
Selamat datang di Stack Overflow! Saya menghargai Anda menjelaskan informasi yang belum dibahas di sini. Anda juga berhasil mengutip entri blog Anda sambil menyatakan kepemilikan dan menyertakan informasi yang relevan di sini. Jika Anda memilih untuk berkontribusi lebih banyak ke situs ini di masa mendatang (dan saya harap Anda melakukannya), pastikan untuk mempertimbangkan artikel ini untuk memastikan posting Anda terus diterima dengan baik jika Anda mengutip blog Anda.
4castle
0
Hanya ada satu kelas publik tingkat atas dalam sebuah file. Nama kelas dari kelas publik itu haruslah nama file. Itu bisa memiliki banyak kelas batin publik.
Anda dapat memiliki banyak kelas dalam satu file. Batasan untuk berbagai tingkat visibilitas kelas dalam file adalah sebagai berikut:
Kelas tingkat atas:
1 kelas publik
0 kelas privat
sejumlah kelas default / dilindungi
Kelas dalam:
sejumlah kelas dalam dengan visibilitas apapun (default, privat, dilindungi, publik)
Jawaban:
Ya bisa. Namun, hanya boleh ada satu kelas tingkat atas publik per
.java
file, dan kelas tingkat atas publik harus memiliki nama yang sama dengan file sumber.Tujuan menyertakan beberapa kelas dalam satu file sumber adalah untuk menggabungkan fungsionalitas dukungan terkait (struktur data internal, kelas dukungan, dll) bersama dengan kelas publik utama. Perhatikan bahwa tidak masalah untuk tidak melakukan ini - satu-satunya efek adalah pada keterbacaan (atau tidak) kode Anda.
sumber
java.awt.LightweightDispatcher
?Jika Anda ingin mengimplementasikan kelas publik, Anda harus mengimplementasikannya dalam file dengan nama yang sama dengan kelas itu. Satu file dapat berisi satu publik dan secara opsional beberapa kelas privat. Ini berguna jika kelas hanya digunakan secara internal oleh kelas publik. Selain itu kelas publik juga dapat berisi kelas dalam.
Meskipun tidak masalah untuk memiliki satu atau lebih kelas privat dalam satu file sumber, saya akan mengatakan bahwa lebih mudah dibaca untuk menggunakan kelas dalam dan anonim sebagai gantinya. Misalnya seseorang dapat menggunakan kelas anonim untuk mendefinisikan kelas Pembanding di dalam kelas publik:
Kelas Comparator biasanya memerlukan file terpisah agar bisa publik. Dengan cara ini ia digabungkan dengan kelas yang menggunakannya.
sumber
Ya, sebanyak yang Anda mau!
TAPI, hanya satu kelas "publik" di setiap file.
sumber
File .java disebut unit kompilasi. Setiap unit kompilasi dapat berisi sejumlah kelas dan antarmuka tingkat atas. Jika tidak ada tipe tingkat atas publik maka unit kompilasi dapat diberi nama apa saja.
Hanya ada satu kelas / antarmuka publik dalam unit kompilasi. Cu harus dinamai persis seperti jenis tingkat atas publik ini.
Poin penting tentang metode utama - bagian 1
Bagian 2
(Poin mengenai jumlah kelas dan tingkat akses mereka yang tercakup di bagian 2)
sumber
Ya, Anda dapat membuat lebih dari satu kelas publik, tetapi itu harus kelas bertingkat.
sumber
Selain kelas dalam anonim, penggunaan lain adalah kelas dalam pribadi yang mengimplementasikan antarmuka publik ( lihat artikel ini ). Kelas luar dapat mengakses semua bidang pribadi dan metode kelas dalam.
Ini memungkinkan Anda membuat dua kelas yang berpasangan erat, seperti model dan tampilannya, tanpa mengekspos implementasi keduanya. Contoh lain adalah koleksi dan iteratornya.
sumber
Secara umum, harus ada satu kelas per file. Jika Anda mengaturnya seperti itu, maka ketika Anda mencari kelas, Anda tahu Anda hanya perlu mencari file dengan nama itu.
Pengecualiannya adalah saat kelas paling baik diimplementasikan menggunakan satu atau lebih kelas pembantu kecil. Biasanya, kode paling mudah diikuti jika kelas-kelas tersebut ada di file yang sama. Misalnya, Anda mungkin memerlukan kelas pembungkus 'tuple' kecil untuk meneruskan beberapa data di antara panggilan metode. Contoh lainnya adalah kelas 'tugas' yang mengimplementasikan Runnable atau Callable. Mereka mungkin sangat kecil sehingga paling baik digabungkan dengan kelas induk yang membuat dan memanggil mereka.
sumber
Ya 200% ,
Contoh:
sumber
Ya bisa, tetapi hanya ada 1 kelas publik di dalam paket apa pun karena kompiler java membuat file .Class yang memiliki nama yang sama dengan nama kelas Publik oleh karena itu jika mereka lebih dari 1 kelas publik akan sulit untuk dipilih kompiler yang seharusnya menjadi nama file Kelas.
sumber
Bervariasi ... Salah satu contohnya adalah kelas anonim (Anda akan menemukan banyak itu saat menggunakan pendengar acara dan semacamnya).
sumber
Saya pikir seharusnya "hanya boleh ada satu kelas publik tingkat atas NON-STATIC per file .java". Bukan?
sumber
Jika Anda ingin mengimplementasikan singleton, yaitu kelas yang berjalan di program Anda dengan hanya satu instance di memori selama eksekusi aplikasi, maka salah satu cara untuk mengimplementasikan singleton adalah dengan menyarangkan kelas statis privat di dalam kelas publik . Kemudian kelas privat bagian dalam hanya membuat instance sendiri ketika metode publiknya untuk mengakses instance privat dipanggil.
Lihat artikel wiki ini,
https://en.wikipedia.org/wiki/Singleton_pattern
Konsep ini membutuhkan waktu untuk dipahami.
sumber
Dalam file .java, hanya ada satu kelas tingkat atas publik yang namanya sama dengan file tersebut, tetapi mungkin ada beberapa kelas dalam publik yang dapat diekspor ke semua orang dan mengakses bidang / metode kelas luar, misalnya : AlertDialog.Builder (dimodifikasi oleh 'public static') di AlertDialog (dimodifikasi oleh 'public')
sumber
Ya Anda dapat memiliki lebih dari satu Kelas dalam satu file .Java. Tapi Anda telah membuat salah satunya menjadi Publik. dan simpan file .java dengan nama yang sama dengan nama kelas publik. ketika Anda akan mengkompilasi file .java itu daripada Anda akan mendapatkan file .class terpisah untuk setiap kelas yang didefinisikan dalam file .java.
Selain itu, ada terlalu banyak metode untuk mendefinisikan lebih dari satu kelas dalam satu file .java.
sumber
Iya ! File .java hanya dapat berisi satu kelas publik.
Jika Anda ingin kedua kelas ini menjadi publik, mereka harus diletakkan di dua file .java: A.java dan B.java.
sumber
Ya, Anda dapat memiliki lebih dari satu kelas di dalam file .java. Paling-paling salah satu dari mereka bisa menjadi publik. Yang lainnya bersifat paket-pribadi. Mereka TIDAK BISA bersifat pribadi atau dilindungi. Jika salah satunya adalah publik, file tersebut harus memiliki nama kelas itu. Jika tidak, APA SAJA dapat diberikan ke file itu sebagai namanya.
Memiliki banyak kelas di dalam satu file berarti kelas-kelas tersebut berada dalam paket yang sama. Jadi kelas lain yang ada di dalam paket itu tetapi tidak di file itu juga bisa menggunakan kelas-kelas itu. Selain itu, ketika paket itu diimpor, kelas pengimpor juga dapat menggunakannya.
Untuk penyelidikan lebih rinci, Anda dapat mengunjungi posting blog saya di sini .
sumber
Hanya ada satu kelas publik tingkat atas dalam sebuah file. Nama kelas dari kelas publik itu haruslah nama file. Itu bisa memiliki banyak kelas batin publik.
Anda dapat memiliki banyak kelas dalam satu file. Batasan untuk berbagai tingkat visibilitas kelas dalam file adalah sebagai berikut:
Kelas tingkat atas:
1 kelas publik
0 kelas privat
sejumlah kelas default / dilindungi
Kelas dalam:
sejumlah kelas dalam dengan visibilitas apapun (default, privat, dilindungi, publik)
Tolong koreksi saya jika saya salah.
sumber
Ya bisa. Namun, hanya boleh ada satu kelas publik per file .java, karena kelas publik harus memiliki nama yang sama dengan file sumber.
sumber