语法:
class Outer{//外部类
class Inner{//内部类
}
}
class Other{外部其他类
}
类中的五大成员:
属性、方法、构造器、代码块、内部类
内部类的分类(四种):
a. 定义在外部类局部位置上(如在大括号里{},像方法、代码块)
1. 局部内部类(有类名)
2. 匿名内部类(没有类名)
b. 定义在外部类的成员位置上(和属性、方法等位置相同)
1. 成员内部类(没有static修饰)
2. 静态内部类(有static修饰)
局部内部类:
public class LocalInnerClass{//5. 其他外部类不能访问局部内部类,即不能在这里实例化局部内部类对象 public static void main(String[] args){ Outer outer = new Outer(); outer.m1();//调用m1方法,会实例化局部内部类inner,然后会调用f1方法 } } class Outer{//外部类 private int n1 = 10; public void m2(){ System.out.println("Outer m2()..."); } public void m1(){ private int n1 = 80; //2. 局部内部类不能添加访问修饰符,但可以用final修饰,添加后就不能被其他内部类继承了 //3. 作用域:局部内部类仅仅在定义它的方法或代码块中,在其他地方就使用不了 class Inner{//局部内部类(本质还是一个类) public void f1(){ System.out.println("n1="+n1 + "我i部内的n1="+Outer.this.n1);//1. 可以直接访问外部类的所有成员,包括私有的 //6. 如果外部类和局部内部类的成员重名时,默认遵循就近原则, //如果要想使用外部类的成员,可以用 外部类.this.成员 来访问 m2(); } } //4. 外部类怎么访问局部内部类?在外部类的方法中,可以创建Inner对象,然后再调用内部类的方法 Inner inner = new Inner(); inner.f1(); } }
匿名内部类:
标签:部类,Outer,内部,局部,n1,class From: https://www.cnblogs.com/zj-studyrecoding/p/17450486.html