Java程序设计:匿名内部类和异常类

目录

1 实验名称

2 实验目的

3 实验源代码

4 实验运行结果图

5 总结


1 实验名称

      匿名内部类和异常类

2 实验目的

       理解并会使用匿名内部子类和跟接口相关的匿名内部类

       理解并掌握异常类的处理

       继续理解向上转型和接口回调实现多态

       熟练代码调试

3 实验源代码

1.Application.java:

import java.util.Arrays;

public class Application {
    public static void main(String[] args) {
        int[] numbers = new int[5];
        // for(int i = 0;i < 6;i++){//赋值
        //第6次循环时出错/数组下标越界
        for (int i = 0; i < numbers.length; i++) {
            numbers[i] = i;
        }
        System.out.println(Arrays.toString(numbers));//得到或输出有关异常信息

        String str = "12345";
        //  int number = 0;
        try {
            //parseInt转换成int类型
            numbers[5] = Integer.parseInt(str);//[1]无异常//异常选中此语句,Code,Surround With,6.try/catch
            System.out.println(numbers[5]);//[1] 12345 反之数组下标越界
        }
       // catch (Exception e){//所以异常类父类 
       //     System.out.println("nn");
       // }
        catch (NumberFormatException e) {
            // throw new RuntimeException(e);//去掉
            System.out.println("您处理的字符串格式上有问题,请重新输入由纯数字构成的字符串");
            //try语句出现异常,catch捕获并处理异常
            //一个try可跟多个catch
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("数组元素下标越界了!!!");
        }catch (Exception e){//改在这里,处理所有未知的,可能出现的异常
                System.out.println("所有未知的,可能出现的异常");
            }

        finally{
            System.out.println("无论前面有没有发生异常,我finally语句都会被执行");
        }

    }
    //类体当中不可直接单独写方法,只成员变量...
}

2.1Application.java:

simulator.playAnimalSound(new Animal() {
        @Override
        public void cry() {//也要重写
            System.out.println("咔嚓咔嚓~");
        }
        public String giveName(){
            return "小熊猫吃竹子";
        }

    });//new出来的是它Animal的匿名的子类对象,向上转型实现多态
       //匿名子类的对象作为playAnimalSound方法的参数
}

4 实验运行结果图

5 总结

       关于匿名内部类和异常类,Java支持在一个类中定义另一个类,这样的类称作内部类,内部类中的方法也可以调用外嵌类中的方法。内部类的类体不可以声明类变量和类方法,外嵌类的类体中可以使用内部类声明对象,作为外嵌类成员。匿名类可以继承父类的方法也可以重写父类的方法。使用匿名类时,必然是在某一个类中直接用匿名创建对象,因此匿名类一定是内部类。匿名类可以访问外嵌类中的成员变量和方法,其类体中不可以声明static成员变量和static方法。由于匿名类是一个子类,但没有类名,所以在用它创建对象时,要直接使用父类的构造方法。如果某个方法的参数是接口类型,那么可以使用接口名和类体组合创建一个匿名对象传递给方法的参数,类体必须要重写接口中的全部方法。

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

茜茜西西CeCe

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

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

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

打赏作者

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

抵扣说明:

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

余额充值