匿名内部类:
就是内部类的简化写法。
前提:
内部类可以继承或实现一个外部类或者接口。
格式为:
new 外部类名或者接口名(){覆盖类或者接口中的代码,(也可以自定义内容。)}
简单理解:
就是建立一个带内容的外部类或者接口的子类匿名对象。
代码解析:
interface ABC{
void show();
void show2();
}
class Outer{
public void method(){
//匿名内部类,new ABC(){} 就是接口的实现类的对象
ABC a = new ABC(){}
}
public void show(){
System.out.println("匿名...show");
}
public void show2(){
System.out.println("匿名...show22222");
}
a.show();
a.show2();
}
class NimingDemo {
public static void main(String[] args) {
//ABC abc = new ABCImpl();
//abc.show();
Outer o = new Outer();
o.method();
System.out.println("Hello World!");
}
}
异常:
异常的体系:
Throwable
Error
通常出现重大问题如:运行的类不存在或者内存溢出等。
不编写针对代码对其处理
Exception
在运行时运行出现的一起情况,可以通过try catch finally
Exception和Error的子类名都是以父类名作为后缀。
Throwable中的方法:
(1)getMessage()
获取异常信息,返回字符串。
(2)toString()
获取异常类名和异常信息,返回字符串。
(3)printStackTrace()
获取异常类名和异常信息,以及异常出现在程序中的位置。返回值void。
(4)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将自定义异常抛出
异常细节:
A:RuntimeException以及其子类如果在函数中被throw抛出,可以不用在函数上声明。
B:一个方法被覆盖时,覆盖它的方法必须抛出相同的异常或异常的子类。
C:如果父类抛出多个异常,那么重写(覆盖)方法必须抛出那些异常的一个子集,不能抛出新的异常
包(package):
作用:
1:对类文件进行分类管理。
照片,视频,游戏,学习
2:给类提供多层命名空间。
注意:
1:写在程序文件的第一行。:
2:名的全称的是 包名.类名。:
3:包也是一种封装形式。
包之间的访问:
1:访问的包中的类权限必须是public的。
2:类中的成员权限:public或者protected
3:protected是为其他包中的子类提供的一种权限
权限修饰符:
本类 同一个包下 不同包下的子类 不同包下的无关类
private Y
默认(什么都不写) Y Y
protected Y Y Y
public Y Y Y Y
不同的修饰符可以修饰谁:
类 成员变量 构造方法 成员方法
private Y Y Y
默认 Y Y Y Y
protected Y Y Y
public Y Y Y Y
abstract Y Y
static Y Y
final Y Y Y
常见使用:
成员变量:
private
构造方法:
public
成员方法:
public
Import:
简化类名。
注意事项:
1:一个程序文件中只有一个package,可以有多个import。
2:用来导包中的类,不导入包中的包。
3:通常写import mypack.Demo;