内部类
内部类的定义
内部类就是在一个类的内部再定义一个类,比如A类中定义一个B类,那么B类相对于A类来说就称为内部类,而A类相对B类来说就是外部类了。
内部类的分类
-
成员内部类:可以获得外部类的私有属性,调用外部类的方法
public class Outer { private int id = 10; public void out(){ System.out.println("这是外部类的方法"); } public class Inner{ public void in(){ System.out.println("这是内部类的方法"); } //获得外部类的私有属性 public void getId(){ System.out.println(id); out(); } } }
public static void main(String[] args) { // new Outer outer = new Outer(); // 通过这个外部类来实例化内部类 Outer.Inner inner = outer.new Inner(); inner.in(); //这是内部类的方法 inner.getId(); //10 //这是外部类的方法 }
-
静态内部类:内部类的定义加上static关键字,无法获取外部类的属性,调用外部类的方法,但是可以获取外部类的静态属性
-
局部内部类
public class Outer { //局部内部类 public void method(){ class Inner{ public void in(){} } } }
-
匿名内部类: 没有名字初始化类,不用将实例保存到变量中
public class Test { public static void main(String[] args) { //没有名字初始化类,不用将实例保存到变量中 new Apple().eat(); UserService userService = new UserService(){ @Override public void hello() { } }; } } class Apple{ public void eat(){ System.out.println("1"); } } interface UserService{ void hello(); }