$:私有的 同一个 8 类中可以访问子类不能访问
$#:同一个包中的类都可访问子类可以访问
缺省 1B:当前类 同一个包 都可以访问
作用域 当前类 同一 $#2/子孙类 其他 $#2/
$"#FFFF
$#FFFG
1BFFGG
$FGGG
&+B!%!!匿名内部类是否可以 =!继承其它类,是否可以 $!实
现1#接口
匿名内部类是没有名字的内部类 不能继承其它类 但一个内部类可以作为一个接口 由另一个内部类实现
一、由于匿名内部类没有名字,所以它没有构造函数。因为没有构造函数,所以它必须完全借用父类的构
造函数来实例化,换言之:匿名内部类完全把创建对象的任务交给了父类去完成。
二、在匿名内部类里创建新的方法没有太大意义,但它可以通过覆盖父类的方法达到神奇效果,如上例所
示。这是多态性的体现。
三、因为匿名内部类没有名字,所以无法进行向下的强制类型转换,持有对一个匿名内部类对象引用的变
量类型一定是它的直接或间接父类类型。
H类或接口IH类的主体I
匿名类
匿名类是不能有名称的类,所以没办法引用它们。必须在创建时,作为 语句的一部分来声明它们。
这就要采用另一种形式的 语句,如下所示:
H类或接口IH类的主体I
这种形式的 语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口。它
还创建那个类的一个新实例,并把它作为语句的结果而返回。要扩展的类和要实现的接口是 语句的
操作数,后跟匿名类的主体。
如果匿名类对另一个类进行扩展,它的主体可以访问类的成员、覆盖它的方法等等,这和其他任何标准的
类都是一样的。如果匿名类实现了一个接口,它的主体必须实现接口的方法。
注意匿名类的声明是在编译时进行的,实例化在运行时进行。这意味着 1 循环中的一个 语句会创
建相同匿名类的几个实例,而不是创建几个不同匿名类的一个实例。
从技术上说,匿名类可被视为非静态的内部类,所以它们具有和方法内部声明的非静态内部类一样的权限