Rumah >Java >javaTutorial >Hubungan antara pengubah akses fungsi Java dan kelas dalaman tanpa nama
Pengubah suai akses fungsi Java menentukan skop keterlihatan fungsi tersebut, termasuk awam, dilindungi, lalai dan peribadi. Sebagai kelas di dalam kelas luar, kelas dalam tanpa nama boleh mengakses semua ahli bukan persendirian kelas luar, jadi hak akses fungsinya berkaitan dengan hak akses fungsi kelas luar.
Hubungan antara pengubah suai akses fungsi Java dan kelas dalaman tanpa nama
Pengubah suai akses fungsi Java menentukan dari mana fungsi itu boleh diakses. Pengubah suai ini termasuk:
ialah kelas dalam Java yang ditakrifkan dalam kelas tanpa menyatakan nama. Ia biasanya digunakan untuk mencipta objek sekali guna, seperti melaksanakan pengendali acara atau pembanding. Kelas dalaman tanpa nama boleh mengakses semua ahli bukan persendirian kelas luar. Oleh itu, hak akses fungsi dalam kelas dalaman tanpa nama berkaitan dengan hak akses fungsi dalam kelas luarnya. Contohnya:
public class OuterClass { private int privateField = 1; protected int protectedField = 2; int defaultField = 3; public int publicField = 4; public void someMethod() { new Runnable() { @Override public void run() { // 内部类可以访问所有非私有成员变量 System.out.println(protectedField); System.out.println(defaultField); System.out.println(publicField); } }.run(); } }
Dalam kod di atas, fungsi dalam kelas dalaman tanpa nama boleh mengakses ProtectedField
, defaultField
dan publicField
kerana ia tidak swasta daripada.
protectedField
、defaultField
和 publicField
,因为它们不是私有的。
实战案例:
假设我们有一个 EventProcessor
接口,它定义了一个 process()
方法。我们想创建一个匿名内部类来实现 process()
方法,该方法可以访问外部类中的数据。
public class Main { private String data = "Hello"; public static void main(String[] args) { EventProcessor processor = new EventProcessor() { @Override public void process() { // 匿名内部类可以访问外部类中的 data 成员变量 System.out.println(data); } }; processor.process(); } }
在这种情况下,只要 data
Kes praktikal:
EventProcessor
, yang mentakrifkan kaedah process()
. Kami ingin mencipta kelas dalaman tanpa nama yang melaksanakan kaedah process()
, yang boleh mengakses data daripada kelas luar. 🎜rrreee🎜Dalam kes ini, selagi pembolehubah ahli data
bukan peribadi, fungsi dalam kelas dalaman tanpa nama boleh mengaksesnya daripada pakej atau subpakej yang sama. 🎜Atas ialah kandungan terperinci Hubungan antara pengubah akses fungsi Java dan kelas dalaman tanpa nama. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!