内部类
局部内部类(一个方法中的类)
- 不允许使用访问权限修饰符(public、private、protected)均不允许
- 的一切都在这个方法中
- 只能访问外部方法final变量和形参(JDK8新特性effectiely final,会给访问的变量和形参自动加上final)
public void ner(int b){
int a =10;
class Inner{
int c = a+b;
}
}
成员内部类
- 和方法、变量一样就是个成员
- 所以可以用所有访问权限、static修饰
注意:static不能修饰非内部类 - 被static修饰的内部类才能拥有static方法。(静态内部类)
与a同级的其他类访问a的内部类:
Inner是Outer的内部类:
6. 非静态内部类: 对象.new 内部类()
Outer.Inner in = new Outer().new Inner();
7. 静态内部类: new 类名.内部类();
Outer.Inner in = new Outer.Inner();
in就可以访问内部类中了
匿名类
匿名类就是一个子类
抽象(接口)生来就是当爹的,所以使用它的方法必须要创建它的子类对象去调用,为了方便:(普通类也可以用这种方法创建子类重写内容)
Main m= new Main();
m.mySum(new 抽象类/接口/类(){重写内容},10);{
方法体......
}
当然这种情况也常常用Lambda表达式简写
注意: 匿名类的分号永远都在参数括号外部 );