内部类

什么是内部类

内部类是一个定义在另一个类内部的类。
内部类可分为四种:

1. 成员内部类: 定义在另一个类内部,且没有使用static修饰,且可以访问外部类所有的成员。要创建内部类的实例必须先存在外部类的实例。
public class Outer { 
 String name; 
 class Inner { 
 public void test() { 
 System.out.println("Inner test" + name); 
 } 
 } 
 public static void main(String[] args) { 
 Outer outer = new Outer(); 
 Inner inner = outer.new Inner(); 
 outer.name = "Inner"; 
 inner.test(); 
 } 
}
2. 静态内部类:用static修饰的内部类,创建内部类无需所外的外部类,可直接声明。
public class Outer { 
 
 public static class Inner { 
 public void test() { 
 System.out.println("Inner test"); 
 } 
 } 
 
 public void test() { 
 Inner inner = new Inner(); 
 inner.test(); 
 } 
 
 public static void main(String[] args) { 
 Inner inner = new Inner(); 
 inner.test(); 
 } 
}
import org.self.study.day2.inner.Outer.Inner; 
// 其他外部类
public class Other { 
 public static void main(String[] args) { 
 Inner inner = new Inner(); 
 inner.test(); 
 } 
}
3. 局部内部类 : 在方法内部、构造方法、代码块内部或者作用域内的类(if or for),外部无法访问,不能使用访问修饰符,可以访问外部类所有成员包括私有成员,可以访问方法中的final或等效final的局部变量
public class Outer { 
 public String name; 
 
 String sex; 
 
 private int age; 
 
 protected String mark; 
 
 public void test() { 
 // 局部内部类 
 class MethodInner { 
 public void test() { 
 System.out.println(name); 
 System.out.println(age); 
 System.out.println(mark); 
 System.out.println(sex); 
 System.out.println("MethodInner test"); 
 } 
 } 
 
 MethodInner methodInner = new MethodInner(); 
 methodInner.test(); 
 } 
 
 public static void main(String[] args) { 
 Outer outer = new Outer(); 
 outer.test(); 
 } 
}
4. 匿名内部类:是一种特殊的内部类,它没有类名,通常用于只需要实现一次的实例类,匿名类在声明的同时实例化。通常用于接口实现或者继承类。
Runnable r = new Runnable() {
 @Override
 public void run() {
 System.out.println("Hello from anonymous class!");
 }
};
new Thread(r).start();

lambda表达式

Runnable r = () -> System.out.println("Hello from lambda!");
new Thread(r).start();
作者:Ireck原文地址:https://www.cnblogs.com/tianzhentian/p/19109142

%s 个评论

要回复文章请先登录注册