内部类
内部类
- 成员内部类
- 静态内部类
- 局部内部类
- 匿名内部类
成员内部类
代码实现
Outer定义一个外部类里面有一个Inner内部类
package com.kuangstudy.Demo12_InnerClass; public class Outer { private int id = 1; public void out(){ System.out.println("这是外部类的方法!"); } public class Inner{ //内部类 public void in(){ System.out.println("这是内部类的方法!"); } public void getID(){ System.out.println(id); } public void getOUT(){ out(); } } }
定义一个Application类进行测试
package com.kuangstudy.Demo12_InnerClass; public class Application { public static void main(String[] args) { Outer outer = new Outer(); //通过这个外部类来实例化内部类 Outer.Inner inner = outer.new Inner();//outer.new Inner(); alt+enter outer.out(); inner.in(); inner.getID(); inner.getOUT(); } }
运行结果
静态内部类
- 静态内部类只是在成员内部类的情况下在其外部以及内部添加static
局部内部类
代码实现
Outer定义一个外部类里面有一个method方法,在method里面定义一个Inner内部类
package com.kuangstudy.Demo12_InnerClass; public class Outer { private int id = 1; public void out(){ System.out.println("这是外部类的方法!"); } public void method(){ // 局部内部类 class Inner{ public void innermethod(){} } } }
匿名内部类
package com.kuangstudy.Demo12_InnerClass; public class Test { public static void main(String[] args) { // Apple apple = new Apple(); // 没有名字初始化类,不用将实例保存到变量中 new Apple().eat(); new UserService(){ @Override public void hello() { } }; } } class Apple{ public void eat(){ System.out.println("1"); } } interface UserService{ void hello(); }