package abstaxt;
public class Outer {
private int id = 2018;
private static int id2 = 2020;
public void out(){
System.out.println("这是外部类的方法");
}
public class Inter{//定义内部类
public void in(){
System.out.println("这是内部类方法");
}
//内部类可以获得外部类的私有属性
public void getId(){
System.out.println(id);
}
}
public static class Inter2{//静态内部类
public void in(){
System.out.println("这是内部类方法");
}
public void getId(){
// System.out.println(id);无法访问非静态属性,
// 这只因为静态方法随着类的产生而产生,它的生成早于非静态的属性或方法
System.out.println(id2);
}
}
public void outerWay(){
class Inner{//局部内部类
public void in(){
System.out.println("这是局部内部类方法");
}
}
new Inner().in();
}
}
主函数如下
public class Application {
public static void main(String[] args) {
Outer outer = new Outer();
//通过外部类实例化内部类
outer.out();
outer.new Inter().in();
Outer.Inter inter = new Outer().new Inter();//实例化内部类
// Outer.Inter inter = outer.new Inter();//实例化内部类
inter.in();
inter.getId();
Outer.Inter2 inter2 = new Outer.Inter2();//实例化静态内部类
inter2.getId();
new Outer().outerWay();//匿名实例化,并调用outerWay(),返回局部内不内的in()
}
}