内部类
成员内部类
代码实现
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();
}