1、非静态内部类
非静态内部类可以直接在一个类里面定义
class F{
class G{
}
}
public class NeiBuLei {
public static void main(String[] args) {
F.G g = new F().new G();
}
}
2、静态内部类
语法:new 外部类.静态内部类();
因为没有一个外部类的实例,所以在静态内部类里面不可以访问外部类的实例属性和方法
除了可以访问外部类的私有静态成员外,静态内部类和普通类没什么大的区别
class F{
static class G{
}
}
public class NeiBuLei {
public static void main(String[] args) {
F.G g = new F.G();
}
}
3、匿名类
匿名类指的是在声明一个类的同时实例化它,使代码更加简洁精练
abstract class H{
public abstract void say();
}
public class NeiBuLei {
public static void main(String[] args) {
H h = new H() {
@Override
public void say() {
}
};
}
}
4、本地类
abstract class H{
public abstract void say();
}
public class NeiBuLei {
public static void main(String[] args) {
class I extends H{
@Override
public void say() {
}
}
I i = new I();
}
}