Java基础 内部类、异常

Java基础

面向对象

内部类

  • 定义在类中的类;

    public class Student{
        String name;
        int score;
        Birth birth;        
        //定义内部类
        class Birth{
            int year;
            int month;
            int day;
        }
    }
    //当类只提供给一个类使用时,就可以考虑定义为内部类;		
    
  • 内部类相当与当前类的成员,可以访问当前类的private成员,也可以被private修饰;

匿名内部类
  • 由一个没有名字的内部类生成的对象;

    1. 在栈上分配了父类/父接口的引用对象;
    2. 创建了一个没有名字的类;
    3. 这个类继承/实现了NEW后面的对象;
    4. 重写/实现了类/接口的方法;
    5. 创建了匿名内部类对象;
    6. 父类型引用指向了子类型的空间;
    public class A{
        int a;
        public void fun(){
            System.out.println(a);
        }
    }
    
    public class B{
        int b;
        A a;
        public B(int b, A a){
            this.b = b;
            //匿名内部类对象
            this.a = new A(){
                public void fun(){
                    super.fun();
                    System.out.println("sub a");
                }
            };
        }       
    }//通过内部类生成的对象只有一个时,考虑使用匿名内部类对象。
    

异常机制

  • 由于编程错误或者偶然的外界因素,导致程序在运行过程中所发生的异常;
  • 异常会中断指令,程序被强制退出;
NullPointerException空指针异常
ArrayIndexOutOfBoundsException数组越界异常
NumberFormatException数字格式化异常
NegetiveArraySizeException数组长度不合法
ClassCastException类型转换异常
异常抛出
  • 一个方法不处理这个异常,而是调用层次向上传递,谁调用这个方法,这个异常就由谁来处理;

  • throw : 将产生的异常抛出(强调的是动作),抛出的既可以是异常的引用,也可以是异常对象。(位置: 方法体内);当异常抛出后,程序停止运行;

    public void sellBook() throws NotBookException {
            if(true) {
                /*
                * 抛出异常对象
                *   当代码抛出异常后代码终止运行
                * */
                throw new NotBookException();
            }
        //throws就是一个不负责任的自私鬼,当遇到异常的时候只会往外抛,抛给它的上一级,自己不去处理。
    
异常捕获
  • 异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处理异常,让程序尽最大可能恢复正常并继续执行,且保持代码的清晰。
  • Java异常机制用到的几个关键字:try、catch、finally。
try{
    //可能抛出异常的语句
}catch(Exception //根据Exception捕获相应的异常){
    //捕获异常,输出异常信息
}catch(Exception | Exception //多个异常时,中间用|分隔){
    //可多个catch语句,但异常子类一定要在异常父类前面
}finally{
    //无论有没有抛出异常,都会执行,通常用来清理资源,例如关闭socket,关闭流,关闭数据库连接等等
}
  • 当异常捕获时,程序不再终止项目;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值