黑马程序员——内部类、异常、包

——- android培训java培训、期待与您交流! ———-



黑马程序员——内部类、异常、包

内部类

  • 将一个类定义在另一个类的里面,对里面那个类就称为内部类(内置类,嵌套类)。
  • 访问特点:
    • 内部类可以直接访问外部类中的成员,包括私有成员。
    • 而外部类要访问内部类中的成员必须要建立内部类的对象。
  • 内部类的位置
    • 内部类定义在成员位置上
      • 可以被private static成员修饰符修饰。
      • 被static修饰的内部类只能访问外部类中的静态成员。
    • 内部类定义在局部位置上
      • 也可以直接访问外部类中的成员。
      • 同时可以访问所在局部中的局部变量,但必须是被final修饰的。

匿名内部类

  • 就是内部类的简化写法。
  • 前提:
    • 内部类可以继承或实现一个外部类或者接口。
  • 格式为:
    • new 外部类名或者接口名(){覆盖类或者接口中的代码,(也可以自定义内容。)}
  • 简单理解:
    • 就是建立一个带内容的外部类或者接口的子类匿名对象。
/*
 匿名内部类。就是内部类的简写格式。

 必须有前提:
 内部类必须继承或者实现一个外部类或者接口。

 匿名内部类:其实就是一个匿名子类对象。 

 格式:new 父类or接口(){子类内容}
 */

abstract class Demo {
    abstract void show();
}

class Outer {
    int num = 4;

    /*
    class Inner extends Demo {
        void show() {
            System.out.println("show ..."+num);
        }
    }
    */
    public void method() {
        // new Inner().show();
        new Demo()// 匿名内部类。
        {
            void show() {
                System.out.println("show ........" + num);
            }
        }.show();
    }
}

class InnerClassDemo {
    public static void main(String[] args) {
        new Outer().method();
    }
}

异常

  • 异常的体系
    • Throwable
      • Error
        • 通常出现重大问题如:运行的类不存在或者内存溢出等。
        • 不编写针对代码对其处理
      • Exception
        • 在运行时运行出现的一起情况,可以通过try catch finally
  • Exception和Error的子类名都是以父类名作为后缀。

Throwable中的方法

  • getMessage()

    获取异常信息,返回字符串

  • toString()

    获取异常类名和异常信息,返回字符串。

  • printStackTrace()

    获取异常类名和异常信息,以及异常出现在程序中的位置。返回值void。

  • printStackTrace(PrintStream s)

    通常用该方法将异常内容保存在日志文件中,以便查阅。

throws和throw

  • throws用于标识函数暴露出的异常。
  • throw用于抛出异常对象。
  • throws与throw的区别:
    • thorws用在函数上,后面跟异常类名。
    • throw用在函数内,后面跟异常对象。

异常处理

try {
    需要检测的代码;
} catch(异常类  变量) {
    异常处理代码;
} finally {
    一定会执行的代码;   
}
Finally代码块只有一种情况不会被执行。就是在之前执行了System.exit(0)。

自定义异常

  • 自定义类继承Exception或者其子类。
  • 通过构造函数定义异常信息。

例:

class DemoException extends Exception {
    DemoException(String message) {
        super(message);
    }
}
  • 通过throw将自定义异常抛出。

异常细节

  • RuntimeException以及其子类如果在函数中被throw抛出,可以不用在函数上声明。
  • 一个方法被覆盖时,覆盖它的方法必须抛出相同的异常或异常的子类。
  • 如果父类抛出多个异常,那么重写(覆盖)方法必须抛出那些异常的一个子集,不能抛出新的异常。
  • 介绍异常在分层设计时的层内封装。

包(package)

  • 对类文件进行分类管理。
  • 给类提供多层命名空间。
  • 写在程序文件的第一行。
  • 类名的全称的是 包名.类名。
  • 包也是一种封装形式。

classpath

  • 给JVM提供的一个环境变量。
  • 指定类或者包所在的路径。
  • classpath变量值的最后有分号与无分号的区别。

包之间的访问

  • 被访问的包中的类权限必须是public的。
  • 类中的成员权限:public或者protected
  • protected是为其他包中的子类提供的一种权限

四种权限

publicprotecteddefaultprivate
同一类中
同一包中
子类
不同包中

import

  • 简化类名。
  • 一个程序文件中只有一个package,可以有多个import。
  • 用来导包中的类,不导入包中的包。

Jar包

  • Java的压缩包
    • 方便项目的携带。
    • 方便于使用,只要在classpath设置jar路径即可。
    • 数据库驱动,SSH框架等都是以jar包体现的。
  • jar.exe工具对jar的操作。
    • 创建jar包
      jar -cvf mypack.jar packa packb
    • 查看jar包
      jar -tvf mypack.jar [>定向文件]
    • 解压缩
      jar -xvf mypack.jar
    • 自定义jar包的清单文件
      jar –cvfm mypack.jar mf.txt packa packb
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值