特殊类的总结
**枚举
枚举就是有固定个数实例的类
枚举的父类是Enum
非公有类
最不特殊的类,可以认为就是被缺省访问控制符修饰的类。也就是说,和public class 的区别仅仅是可以被访问的范围不一样
如果一个文件只有非公有类,那么类名和文件名可以不一样。当然文件后缀必须是 java 。
内部类
内部类的特殊之处在于可见性和可以访问的数据以及方法。内部类会被认为是类本身的代码,所以外部类的 private 成员对其可见
类里面可以有静态变量,成员变量和局部变量,对比着看,内部类也分为这三种。这些内部类的访问修饰符,可以访问的数据以及可见性都可以对比着记忆
• 静态内部类:可以有访问修饰符,可以在类外部访问(对比静态变量)
• 成员内部类:可有访问修饰符,有外部类对象的 this 自引用(对比成员方法),可
以在外部使用,但是创建对象语法需要指明外部对象
• 局部内部类:没有访问修饰符(对比局部变量) ,有外部类的引用,访问参数和
局部变量,必须是 final 的
内部类可以有父类,可以实现接口。
匿名类
匿名类是一种创建接口和抽象类对象的语法,任何可以 new 一个对象的地方,都可以使用匿名类
匿名类只能实现/继承一个接口/抽象类,本身没有名字
如果是在成员方法或者给成员方法赋值时创建匿名类,那么会有对外部对象的this自引用
类就一个
无论是内部类还是匿名类,类都是只有一个,对象可以有多个。不会在每次执行到内部类声明的地方,就创建一个新的类