第九章 内部类、匿名类与异常类:本章主要讲解内部类、匿名类与异常类9.1内部类:1),内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类。2),内部类成员可以直接访问外部类的私有数据,因为内部类被当成其外部类成员,同一个类的成员之间可以互相访问。但外部类不能访问内部类的实现细节,比如内部类的属性。[单选题]
9.2匿名类:匿名内部类适合用于创建那些仅需要一次使用的类。比如在命令模式中,当需要传入一个Command对象时,使用匿名内部类将更加方便。从语法的角度来看,定义内部类和定义外部类的语法大致相同,内部类除了需要定义在其他类里面之外,还存在如下两点区别:1),内部类比外部类可以多使用三个修饰符,private,protected,static,外部类不可以使用这三个修饰符2),非静态内部类不能拥有静态成员
9.3异常类:一般情况下,程序中需要对异常进行处理。通过对异常情况的处理,可以发现产生异常的原因,并进行必要的异常处理,从而使程序的执行流程继续下去。
下面程序的运行结果是( )
public class Demo {
public static void main(String[] args) {
try {
System.out.println(10 / 0);
System.out.println("除法正常运行");
} catch (ArithmeticException e) {
System.out.println("除数不能为0");
}
}
}
[单选题]
下面程序的运行结果是( )
public class Demo {
public static void main(String[] args) {
try {
System.out.println(10 / 0);
System.out.println("除法正常运行");
} catch (ArithmeticException e) {
System.out.println("除数不能为0");
}
}
}
, 输出:除法正常运行, 编译失败
]
[单选题]下列关于自定义异常的说法中,错误的是( )选项:[自定义异常必须继承Error类, 自定义异常要继承Exception类, 自定义异常可以在构造方法中用super关键字传递异常信息给父类, 自定义异常继承Exception类后,具有可抛性]
[单选题]以下对于try…catch语句描述正确的是( )选项:[try...catch语句处理程序中的bug, try…catch语句处理程序中的错误, try...catch语句处理程序中的异常, 以上说法都不正确]
[多选题]下面( )选项可以使用static关键字修饰。选项:[局部变量, 成员内部类, 成员变量, 成员方法]
[单选题]
public class Example {
public static void main(String[] args) {
try{
int rst = 4/0;
System.out.println("rst = "+rst);
}catch(Exception e){
System.out.println("catch语句块执行");
return;
}finally{
System.out.println("finally语句块执行");
}
System.out.println("程序继续向下执行");
}
}
运行以上程序,输出的结果是( )
, catch语句块执行, 0 程序继续向下执行, catch语句块执行 程序继续向下执行]
[多选题]关于内部类,下面说法正确的是( )选项:[成员内部类是外嵌类的一个成员,可以访问外嵌类的其它成员, 内部类中不可以声明类变量, 外嵌类可以访问成员内部类的成员, 内部类可以被修饰为static内部类]
[单选题]
下列程序段的运行结果为( )。
public class Test{
public static void foo(int i){
try{
if(i==1){
throw new Exception();
}
System.out.print("1");
}catch(Exception e){
System.out.print("2");
}finally{
System.out.print("3");
}
System.out.print("4");
}
public static void main(String[] args){
foo(1);
}
}
[单选题]
自定义的异常类必须继承自Exception或其子类。()
[单选题]throws声明在一个方法上,说明这个方法一定会抛出异常。( )选项:[对, 错]
[单选题]
编译异常如果产生了,要求我们必须处理,要么捕获,要么抛出。()
[单选题]
匿名内部类其实就是一个没有类名的内部类。( )
[单选题]
throw关键字用于在方法上声明抛出异常的实例对象。( )
[单选题]下列关于匿名内部类的描述,错误的是( )
选项:[匿名内部类的前提是必须要继承父类或实现接口, 匿名内部类的格式是"new 父类(参数列表) 或 父接口(){}", 匿名内部类是内部类的简化形式, 匿名内部类可以有构造方法]
[单选题]下列符号中,( )用于分隔throws关键字抛出的多个异常。选项:[,, &, ;, |]