已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第八节课内部类和异常处理,学习目标了解内部类有哪几种类型了解内部类和外部类的关系能看懂有匿名内部类的程序,第八节课内部类和异常处理,内部类定义在类中的类就称为内部类,也称为成员类分类非静态成员内部类静态成员内部类局部内部类匿名内部类特点内部类可以访问外部类的成员,包括private成员内部类的成员只有在内部类的范围内是可知的,不能被外部类使用优点高内聚、低耦合内部类相当于外部类的密友,外部类和其他类相当于普通朋友,内部类举例,publicclassAclassBstaticclassCvoidrun()classD,类B前没有static修饰符它是非静态内部类,类C前有static修饰符它是静态内部类,类D在外部类的方法run中定义它是局部内部类,非静态成员内部类在非静态成员内部类中,如果要访问自己定义的属性,可以直接访问,也可以通过this来访问在非静态成员内部类中,可以访问外部类的所有成员,包括private修饰的。内部类的实例化有以下几个途径通过外部类的非静态方法实例化内部类通过外部类的静态main方法实例化内部类,非静态成员内部类举例在非静态方法中生成内部类对象方法,importjava.util.*;publicclassStudentprivateStringname;privateintage;privateclass学籍Calendar入学时间;String系别;privatevoid输入系别(Stringxb)系别=xb;privatevoid输出系别()System.out.println(系别);publicvoid输出学生信息()学籍xj=new学籍();xj.输入系别(计算机系);xj.输出系别();publicstaticvoidmain(Stringargs)Students=newStudent();s.输出学生信息();,这是外部类,这是内部类,它的修饰符没有static,可以和成员变量、成员方法一样有private修饰符,在外部类的非静态方法中生成内部类对象用此方法,非静态成员内部类举例在静态方法中生成内部类对象方法,importjava.util.*;publicclassStudentprivateStringname;privateintage;privateclass学籍Calendar入学时间;String系别;privatevoid输入系别(Stringxb)系别=xb;privatevoid输出系别()System.out.println(系别);publicstaticvoidmain(Stringargs)Student.学籍xj=newStudent().new学籍();xj.输入系别(计算机系);xj.输出系别();,这是外部类,这是内部类,它的修饰符没有static,可以和成员变量、成员方法一样有private修饰符,在外部类的静态方法中生成内部类对象用此方法,匿名内部类记住首先它是匿名的我们知道在新建一个对象时要用new类名(),这个类是匿名,那如何生成对象呢?因为它是匿名的,因此我们在生成对象时就用new父类()或new接口()来生成对象,因此匿名类一定是子类。其次它是内部类因为这个类没有名字所以一定不能作为外部类,只能作内部类。匿名类的写法在创建对象的时候直接写出类的类体一般匿名内部类都写在外部类的方法的参数中,因此匿名内部类结束时会出现“);”匿名内部类没有构造函数,new父类()类体;,new接口()类体;,或,匿名内部类举例,package匿名内部类;publicinterface马戏团动物void会表演();void动物名();,package匿名内部类;publicclass马戏团publicvoid指派动物(马戏团动物dw)publicstaticvoidmain(Stringargs)马戏团mx=new马戏团();mx.指派动物(new马戏团动物()publicvoid动物名()System.out.println(我是狗熊);publicvoid会表演()System.out.println(我会走钢丝););,1、在一个包中新建一个接口,名为马戏团动物,新建一个类,名为马戏团2、接口代码如上图所示3、马戏团类代码如图所示4、在“马戏团”类中有一个方法叫“指派动物”,它需要“马戏团动物”对象,由于没有事先设计任何子类继承“马戏团动物”类,因此在调用该方法时,我们就用设计匿名内部类的方法临时设计一个没名的子类,异常程序在设计上和编译上都没有错误,但在运行过程中会出现异常情况,这样现象就称为异常。比如下一页的程序,编译是没有任何问题的,但运行过程中会出现很多异常情况,如果程序在设计过程中没考虑到可能会出现的异常,那么当异常真正发生时程序就将中止,这样的程序就称为不健壮的程序,异常举例,package异常;importjava.util.*;publicclass输数publicstaticvoidmain(Stringargs)for(inti=1;i=5;i+)System.out.print(请输入第+i+个数);Scannersn=newScanner(System.in);intn=sn.nextInt();System.out.println(你输入的是:+n);,此程序是先输入5个数,并输出这5个数,如果用户每次根据提示只是输入5个数,程序是正常的,由于nextInt()函数只能接收整数,如果用户在输入过程中输入的不是整数,程序就会出现异常,左边是异常出现的截图,使用try和catch捕获异常语法try可能会出现异常的语句;catch(Exceptione)当异常出现后要运行的语句;finally不管是否异常都要执行的语句Java要求我们把可能会出现异常的语句写到try语句块中紧接着try语句块就要写catch语句finally语句块可写可不写所有的异常都是Exception的子类,因此catch(Exceptione)可以捕获到所有的异常,修改后的程序如下,package异常;importjava.util.*;publicclass输数publicstaticvoidmain(Stringargs)inti=1;while(i=5)trySystem.out.print(请输入第+i+个数);Scannersn=newScanner(System.in);intn=sn.nextInt();System.out.println(你输入的是:+n);i+;catch(Exceptione)System.out.println(你输入的不是数字);,1、将有可能出现异常的语句放到try中2、catch语句块中放如果发生异常要运行的语句3、如果输入正确i+,如果输入不正确i不用加1,有时为了程序的简洁,我们不想在方法中写try.catch语句块,可以在定义方法时将异常抛出,由调用它的方法来捕获异常。抛出异常的方法按如下方式定义方法()throwsException,package异常;importjava.util.Scanner;publicclass输数2void输入(inti)throwsExceptionSystem.out.print(请输入第+i+个数);Scannersn=newScanner(System.in);intn=sn.nextInt();System.out.println(你输入的是:+n);publicstaticvoidmain(Stringargs)输数2su=new输数2();inti=1;while(i=5)trysu.输入(i);i+;catch(Exceptione)System.out.println(你输入的不是整数);,要使用Java提供的某些类的某些方法时,必须将它放在trycatch块中比如以后我们将要学到的Thread类的sleep()方法,JavaDoc帮助文档中是这样描述它的,sleeppublicstaticvoidsleep(longmillis)throwsInterruptedException,帮助文档告诉我们调用这个方法的过程中有可能会出现异常,因此程序必须将这段代码写到try.catch语句块中,否则程序会出错。,从上面左图可以看到直接写会出错,从右图可以看到写到try.catch语句块中不会错,ClassAstaticprivateStringname;stati
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 双靶向调控自噬协同抗肿瘤策略
- 专科护理知识与应用
- 双膦酸盐在骨转移治疗中的不同人群个体化用药方案制定
- 2026年一级注册建筑师之建筑物理与建筑设备考试题库300道含完整答案(有一套)
- 2025江西景德镇市生态环境系统事业单位招聘工作人员8人备考题库附答案
- 2025江西吉安井冈山市城投控股集团有限公司招募见习人员10人笔试参考题库附答案
- 2025河北保定市医疗保障局选聘1人备考题库附答案
- 2026年一级建造师之一建铁路工程实务考试题库300道及参考答案【模拟题】
- 2026年一级建造师之一建铁路工程实务考试题库300道含完整答案【各地真题】
- 2025演出经纪人员资格证核心考点试题库附答案
- 2026年江西萍实铁路发展股份有限公司校园招聘4人笔试考试参考试题及答案解析
- 儿科护士岗前培训
- 短期临时工合同范本
- 2025年中国保险行业绿色保险业务研究报告
- 2025贵州黔西南州水资源开发投资(集团)有限公司招聘3人备考题库附答案详解(考试直接用)
- 负压吸引器操作课件
- 2026年江西省南昌市单招职业倾向性测试模拟测试卷附答案解析
- GB/T 16571-2012博物馆和文物保护单位安全防范系统要求
- 2022年南通经济技术开发区控股集团有限公司招聘笔试试题及答案解析
- 化学水车间设备、管道安装作业指导书
- 幼儿园绘本故事:《十二生肖》 课件
评论
0/150
提交评论