——- 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
- Error
- Throwable
- 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是为其他包中的子类提供的一种权限
四种权限
public | protected | default | private | |
---|---|---|---|---|
同一类中 | √ | √ | √ | √ |
同一包中 | √ | √ | √ | |
子类 | √ | √ | ||
不同包中 | √ |
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
- 创建jar包