匿名内部类:
就是内部类的简化写法
前提:内部类可以继承或实现一个外部类或者接口
格式为:new 外部类名或者接口名(){覆盖类或者接口中的代码,
(也可以自定义内容。)}
例如:
class NoNameDemo
{
public static void main(String[] args)
{
Do d = new Do();
//d.print(new B());
d.print(new A(){public void test(){
System.out.println("haha");
}});
}
}
interface A
{
void test();
}
/*
class B implements A
{
public void test(){
System.out.println("hahah");
}
}
*/
class Do
{
public void print(A a){
a.test();
}
}
接口里边可以定义内部接口和抽象类抽象类里也可以定义接口和抽象类
例如:
abstract class A{
public abstract void printA();
interface B{
public void printB();
}
}
intreface A{
public abstract void printA();
abstract class B{
public abstract void printB();
}
}
异常
异常的体系
Throwable
• Error
通常出现重大问题如:运行的类不存在或者内存溢出等。
不编写针对代码对其处理
Exception
• 在运行时运行出现的一起情况,可以通过try catch finally
Exception和Error的子类名都是以父类名作为后缀。
throws和throw:
throws用于标识函数暴露出的异常。
throw用于抛出异常对象。
throws与throw的区别:
• thorws用在函数上,后面跟异常类名。
• throw用在函数内,后面跟异常对象。
try{
需要检测的代码;
}catch{
异常处理代码;
}finany{
一定会执行的代码;
}
1.RuntimeException以及其子类如果在函数中被throw抛出,可以不用在函数上声明。
2.一个方法被覆盖时,覆盖它的方法必须抛出相同的异常或异常的子类。
3.如果父类抛出多个异常,那么覆写(覆盖)方法必须抛出那些异常的一个子集,不能抛出新的异常