chapter 6 内部类与异常类

chapter 6 内部类与异常类

ID:5315803

大小:291.50 KB

页数:41页

时间:2017-12-08

chapter 6 内部类与异常类_第1页
chapter 6 内部类与异常类_第2页
chapter 6 内部类与异常类_第3页
chapter 6 内部类与异常类_第4页
chapter 6 内部类与异常类_第5页
资源描述:

《chapter 6 内部类与异常类》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Java语言程序设计shelly200607@126.com内部类匿名类异常类断言Class类主要内容6.1内部类Java支持在一个类中声明另一个类,这样的类称作内部类,而包含内部类的类成为内部类的外嵌类。内部类的外嵌类的成员变量在内部类中仍有效,内部类中的方法也可以调用外嵌类中的方法。内部类的类体中不可以声明类变量和类方法,外嵌类的类体中可以用内部类声明对象,作为外嵌类的成员。例6.1publicclassChina{finalStringsong="义勇军进行曲";privateBeijingbeijing;//内部类声明的对象,作为外嵌类的成员China(

2、){beijing=newBeijing();}publicBeijinggetBeijing(){returnbeijing;}StringgetSong(){returnsong;}classBeijing{//内部类的声明Stringname="北京";voidspeak(){System.out.printf("%s%s","我们是"+name,"我们的国歌是:"+getSong());}}}publicclassExample6_1{publicstaticvoidmain(Stringargs[]){Chinachina=newChina();c

3、hina.getBeijing().speak();}}为何使用内部类原因是:1.一个内部类的对象能够访问创建它的对象的实现,包括私有数据。2.对于同一个包中的其他类来说,内部类能够隐藏起来。3.匿名内部类可以很方便的定义回调。4.使用内部类可以非常方便的编写事件驱动程序注意和普通的类一样,内部类也可以有静态的。不过和非静态内部类相比,区别就在于静态内部类没有了指向外部的引用。这实际上和C++中的嵌套类很相像了,Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用这一点上。除此之外,在任何非静态内部类中,都不能有静态数据,静态方法或者又一个静态内部类

4、(内部类的嵌套可以不止一层)。不过静态内部类中却可以拥有这一切。6.2匿名类6.2.1和类有关的匿名类Java允许直接使用一个类的子类的类体创建一个子类对象。创建子类对象时,除了使用父类的构造方法外还有类体,此类体被认为是一个子类去掉类声明后的类体,称作匿名类。假设People是类,那么下列代码就是用People的一个子类(匿名类)创建对象:newPeople(){匿名类的类体};匿名类可以继承也可以重写父类的方法。匿名类一定是内部类。匿名类的类体重不可以声明static成员变量及方法。用匿名类创建对象时,要使用父类的构造方法。匿名类的常用方式是向方法的参数传值

5、。例6.2abstractclassSpeak{publicabstractvoidspeakHello();}classStudent{voidf(Speaksp){sp.speakHello();}}publicclassExample6_2{publicstaticvoidmain(Stringargs[]){Speakspeak=newSpeak(){publicvoidspeakHello(){System.out.println("大家好,祝工作顺利!");}};speak.speakHello();//上转型对象speak调用匿名类重写的speak

6、Hello方法Studentst=newStudent();st.f(newSpeak(){publicvoidspeakHello(){System.out.println("Iamastudent,howareyou");}});}}注意匿名类的声明是在编译时进行的,实例化在运行时进行。这意味着for循环中的一个new语句会创建相同匿名类的几个实例,而不是创建几个不同匿名类的一个实例。6.2.2和接口有关的匿名类假设Computable是一个接口,那么,Java允许直接用接口名和一个类体创建一个匿名对象,此类体被认为是实现了Computable接口的类去掉类

7、声明后的类体,称作匿名类。下列代码就是用实现了Computable接口的类(匿名类)创建对象:newComputable(){实现接口的匿名类的类体}例6.3interfaceCubic{doublegetCubic(doublex);}classA{voidf(Cubiccubic){doubleresult=cubic.getCubic(3);System.out.println("result="+result);}}publicclassExample6_3{publicstaticvoidmain(Stringargs[]){Cubiccu=newCu

8、bic(){public

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。