找回密码
 立即注册
首页 业界区 业界 内部类

内部类

虾氲叱 2025-10-2 20:43:24
什么是内部类

内部类是一个定义在另一个类内部的类。
内部类可分为四种:
1. 成员内部类: 定义在另一个类内部,且没有使用static修饰,且可以访问外部类所有的成员。要创建内部类的实例必须先存在外部类的实例。
  1. public class Outer {  
  2.     String name;  
  3.     class Inner {  
  4.         public void test() {  
  5.             System.out.println("Inner test" + name);  
  6.         }  
  7.     }  
  8.     public static void main(String[] args) {  
  9.         Outer outer = new Outer();  
  10.         Inner inner = outer.new Inner();  
  11.         outer.name = "Inner";  
  12.         inner.test();  
  13.     }  
  14. }
复制代码
2. 静态内部类:用static修饰的内部类,创建内部类无需所外的外部类,可直接声明。
  1. public class Outer {  
  2.   
  3.      public static class Inner {  
  4.         public void test() {  
  5.             System.out.println("Inner test");  
  6.         }  
  7.     }  
  8.   
  9.     public void test() {  
  10.         Inner inner = new Inner();  
  11.         inner.test();  
  12.     }  
  13.   
  14.     public static void main(String[] args) {  
  15.         Inner inner = new Inner();  
  16.         inner.test();  
  17.     }  
  18. }
复制代码
  1. import org.self.study.day2.inner.Outer.Inner;  
  2. // 其他外部类
  3. public class Other {  
  4.     public static void main(String[] args) {  
  5.         Inner inner = new Inner();  
  6.         inner.test();  
  7.     }  
  8. }
复制代码
3. 局部内部类 : 在方法内部、构造方法、代码块内部或者作用域内的类(if or for),外部无法访问,不能使用访问修饰符,可以访问外部类所有成员包括私有成员,可以访问方法中的final或等效final的局部变量
  1. public class Outer {  
  2.     public String name;  
  3.   
  4.     String sex;  
  5.   
  6.     private int age;  
  7.   
  8.     protected String mark;  
  9.   
  10.     public void test() {  
  11.         // 局部内部类  
  12.         class MethodInner {  
  13.             public void test() {  
  14.                 System.out.println(name);  
  15.                 System.out.println(age);  
  16.                 System.out.println(mark);  
  17.                 System.out.println(sex);  
  18.                 System.out.println("MethodInner test");  
  19.             }  
  20.         }  
  21.   
  22.         MethodInner methodInner = new MethodInner();  
  23.         methodInner.test();  
  24.     }  
  25.   
  26.     public static void main(String[] args) {  
  27.         Outer outer = new Outer();  
  28.         outer.test();  
  29.     }  
  30. }
复制代码
4. 匿名内部类:是一种特殊的内部类,它没有类名,通常用于只需要实现一次的实例类,匿名类在声明的同时实例化。通常用于接口实现或者继承类。
  1. Runnable r = new Runnable() {
  2.     @Override
  3.     public void run() {
  4.         System.out.println("Hello from anonymous class!");
  5.     }
  6. };
  7. new Thread(r).start();
复制代码
lambda表达式
  1. Runnable r = () -> System.out.println("Hello from lambda!");
  2. new Thread(r).start();
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册