基于《java2实用教程》的java知识点复习整理【第七章——内部类与异常类】

第七章——内部类与异常类

类除成员变量和方法的第三个成员

一、知识结构框架

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VjgqDILv-1619507105036)(C:\Users\官二的磊子\Desktop\学习\image-20210427145957437.png)]

二、知识点详解

1、内部类

**内部类:**一个类中定义一个类

**外嵌类:**包含内部类的类称为内部类的外嵌类

关系:

  • 内部类的外嵌类的成员变量在内部类中仍然有效,内部类中的方法也可以调用外嵌类的方法

  • 内部类的类体中不可以声明类变量和类方法(static),但是内部类可以被修饰为static内部类,外嵌类的类体可以用内部类声明对象作为外嵌类的成员

  • 内部类仅供其外嵌类使用 ,其他类不可以用某个类的内部类声明对象

内部类的字节码文件名:外嵌类名$内部类名

static内部类是外嵌类中的一种静态数据类型,程序可以在其它类中使用static内部类来创建对象。但static内部类不能用来操作外嵌类中的实例成员变量。

2、匿名类

和子类有关的匿名类:

直接使用一个类的子类的类体创建一个子类对象。即创建子类对象时,除了使用父类的构造方法外还有类体,此类体被认为是一个子类去掉声明后的类体称为匿名类。

//new 类名(){类体};一般new 类名()为创建对象,但此处是省略了父类的声明直接创建了一个子类
new 类名(){
  匿名类的类体  
};

匿名类特点:

  • 匿名类可以继承父类的方法也可以重写父类的方法
  • 使用匿名类时,必然是在某个类中直接用匿名类创建对象,因此匿名类一定是内部类
  • 匿名类可以访问外嵌类中的成员变量和方法,匿名类的类体中不可以声明static变量和static方法
  • 由于匿名类是一个子类,没有类名,所以在用匿名类创建对象时,要直接使用父类的构造方法

和接口有关的匿名类:

java允许直接使用接口名和一个类体创建一个匿名对象,该类体被认为是实现接口的类去掉声明后的类体。

//该处new 接口名():实际是创建一个实现该接口的类去掉声明后保留类体
new 接口名(){
  匿名类的类体  
};
3、异常类

try-catch语句

try{
    
}
catch(Except e){

}

自定义异常类

自己书写一个子类继承父类Exception,即为异常类的扩展

throws:在方法名后书写,后接一个异常类名

throw:后接该异常的对象,如果异常发生,将抛出异常,导致方法结束

断言

断言语句用于调试代码阶段。在调试代码阶段让断言语句发挥作用,这样就可以发现一些致命的错误,当程序正式运行时就可以关闭断言语句,但仍把断言语句保留在源代码中,如果以后应用程又需要调试,可以重新启用断言语句。

assert booleanExpression;
assert booleanExpression:messageException;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ni9M6jbc-1619507105038)(C:\Users\官二的磊子\Desktop\学习\image-20210427144338115.png)]

三、题库考查知识点整理

1、E$1.class是匿名类的字节码(编译器编译器给该匿名类的名字是E$1)。

2、和类有关的匿名类一定是该类的一个非抽象子类。

3、内部类的类体中不可以声明类变量(static)变量。

4、非匿名内部类可以实现接口。

5、内部类可以是final类。

6、一个方法在声明时不可以使用throw关键字声明要产生的若干个异常。

7、接口匿名类(和接口有关的匿名类)不可以是抽象类。

8、匿名类有构造方法。

9、内部类的外嵌类的成员变量在内部类中仍然有效。内部类中的方法也可以调用外嵌类中的方法。外嵌类的类体中可以用内部类声明对象,作为外嵌类的成员。

10、可以用private或protected修饰内部类。内部类仅供它的外嵌类使用,其他类不可以用某个类的内部类声明对象。static内部类不能操作外嵌类中的实例成员变量。

11、非匿名内部类也可以有(内部)子类。不可能用匿名类声明对象,但却可以直接用匿名类创建一个对象。匿名子类(和子类有关的匿名类)可以继承父类的方法也可以重写父类的方法。

12、匿名子类(和子类有关的匿名类)的类体中不可以声明static成员变量和static方法。接口匿名类(和接口有关的匿名类)的类体中不可以声明static成员变量和static方法。匿名类一定是内部类。

13、try~catch语句可以由几个catch组成,分别处理发生的相应异常。一个方法在声明时可以使用throws关键字声明要产生的若干个异常。throw的作用就是抛出异常.throw和throws是两个不同的关键字。

14、匿名子类(子类有关的匿名类)一定是final类。匿名子类(子类有关的匿名类)一定不是抽象类。接口匿名类(和接口有关的匿名类)一定是final类。

15、匿名类只一个不带参数的构造方法(编译器会给匿名类一个名字和构造方法)。匿名类一定是final类。匿名类一定是内部类。

16、匿名类没有构造方法。匿名子类(和子类有关的匿名类)的类体中可以定义static方法。

象类。接口匿名类(和接口有关的匿名类)一定是final类。

17、一个方法在声明时可以使用throws关键字声明要产生的若干个异常。匿名类一定是final类。

  • 19
    点赞
  • 118
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未来村村长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值