第八章 内部类
内部类
常规内部类在另一个类的波形括号内声明,单位与任何方法或其它代码块之外
内部类是封装类(外部类)一个完整的成员,因此,他能够使用访问修饰符标识,也能使用abstract或final修饰符标识,但是不能同时使用。
内部类实例与封装类实例共享一种特殊关系,这种关系使内部类可以访问外部类的所有成员,包括私有成员。
在封装类内部实例化内部类,如下:MyInner mi=new MyInner();
在封装类的实例方法之外实例化内部类,如下:MyOuter mo=new MyOuter();MyOuter.MyInner inner=mo.new MyInner();
在内部类代码中,关键字this表示内部类实例的引用。为了引用外部类,应该使用如下:MyOuter.this;
局部方法内部类
局部方法内部类在封装类的方法内定义。
局部方法内部类的实例化必须发生在同一个方法内,但位于该类的定义代码之后。
class MyOuter{
private String x="outer";
void doStuff(){class MyInner{public void seeOuter()
{System.out.println("outer x is"+x);}}
MyInner mi =new MyInner();
mi.seeOuter();
局部方法内部类不能使用在该方法内声明的变量,除非变量是Final的,但是可以使用封装类的所有成员变量
局部方法内部类的修饰符只有abstract和final。访问修饰符等都不可以用。
在一个静态方法内声明的局部方法内部类只能访问该封装类的静态成员,不能访问实例变量。
匿名内部类
匿名内部类没有名称,它的类型是一个命名类型的子类,或者是接口的实现。
不要忘记匿名内部类波形括号之后的分号。如果是局部方法内部类,则是:});如果只是普通的旧式匿名类,就是};
在匿名内部类引用上能够调用的方法必须是在引用变量类(或者接口),也可以理解为父类中,定义的方法,即使该匿名类确实是引用变量类型的子类或实现。
匿名内部类只可以扩展或者实现一个借口,两者取其一,也不能实现多个接口。这个和别的内部类不同。
变元内声明的匿名内部类
class MywonderfulClass{
void go(){
Bar b=new Bar();
b.doStuff(new Foo(){
public void foof(){do sth}
});
}
}
interface Foo{void foof();}
class Bar{void doStuff(Foo f){}}
静态嵌套类
静态嵌套类是用Static修饰符表示的内部类
静态嵌套类是一个顶级嵌套类。
由于嵌套类是静态的,所以它不与外部类实例共享任何关系。事实上,不需要外部类实例来实例化静态嵌套类。
实例化静态嵌套类需要使用外部类名称和嵌套类名称,如下:
BigOuter.Nested n =new BigOuter.Nested();
静态嵌套类不能访问外部类的非静态成员,因为它没有对外部实例的隐含引用。
分享到:
相关推荐
scjp考试资料,其中包含题目,答案,ppt,模拟试题,复习笔记,常见问题
SCJP 310-065 全真模擬測驗 2009/09考過,命中率95
SCJP考题和学习笔记
SCJP_经典题笔记之一,可以看之,1分而已
大小: SCJP_Guide_考试认证指南.pdf
scjp笔记 考过scjp的学生的第一手资料 强烈推荐
java scjp的官网认证资料,应该会有用吧
SCJP复习笔记,其中有复习SCJP过程中的一些问题供大家分享
sjcp的考试的题目...希望对哥们你有帮助.
蓝小刀的学习笔记_SCJP1.4.doc
Testpassport最新SUN_SCJP_310-065_题库免费下载.pdf
sun官方提供的scjp考试范围,考前必看!
对于Java程序设计员,Sun推出两项认证:Sun Certificated Java Programmer (SCJP)和Sun Certificated Java Developer(SCJD)。 SCJP 可以说各种Java认证的基础,相对于SCJD来说,SCJP跟侧重于测验您的Java程序...
SUN SCJP 认证笔记。
本书主要内容包括:声明和访问控制、面向对象、赋值和初始化、运算符、流程控制、异常和断言、I/O、格式化和解析、泛型、集合、内部类、线程和Java开发。书中在介绍考试要点时针对每个考试目标,使用了大量的插图...
专为sun的SCJP认证而编制,内容涉及了SCJP认证的方方面面
关于sun公司提供scjp认证的有关习题以及答案 对要考scjp认证的兄弟姐妹们可能会有帮助
SCJP1.4考试笔记 SCJP中容易忽略的细节笔记 SCJP 陷阱大全 SCJP 阅读笔记 ……