Apa tujuan memiliki lebih dari satu kelas dalam file Java? Saya baru mengenal Java.
Diedit: Itu bisa dicapai dengan membuat kelas dalam di dalam kelas publik, bukan?
Apa tujuan memiliki lebih dari satu kelas dalam file Java? Saya baru mengenal Java.
Diedit: Itu bisa dicapai dengan membuat kelas dalam di dalam kelas publik, bukan?
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.
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:
public static Comparator MyComparator = new Comparator() {
public int compare(Object obj, Object anotherObj) {
}
};
Kelas Comparator biasanya memerlukan file terpisah agar bisa publik. Dengan cara ini ia digabungkan dengan kelas yang 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 statements
class MyClass{...}
interface Service{...}
...
//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 Test
public class Test{...}
//!public class Operations{...}
interface Selector{...}
...
//Other non-public classes/interfaces
Poin penting tentang metode utama - bagian 1
(Poin mengenai jumlah kelas dan tingkat akses mereka yang tercakup di bagian 2)
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 200% ,
Contoh:
class A {
void methodDeclaration() { System.out.println("!!!"); }
}
class B {
public static void main(String[] args) {
new A().methodDeclaration();
}
}
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.
Bervariasi ... Salah satu contohnya adalah kelas anonim (Anda akan menemukan banyak itu saat menggunakan pendengar acara dan semacamnya).
Saya pikir seharusnya "hanya boleh ada satu kelas publik tingkat atas NON-STATIC per file .java". Bukan?
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.
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.
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.
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 .
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.
Ya bisa. Namun, hanya boleh ada satu kelas publik per file .java, karena kelas publik harus memiliki nama yang sama dengan file sumber.