接口和异常

版权声明:啥是版权,感觉都是侵权必究。我也会究的。 https://blog.csdn.net/Scan_13286/article/details/85082355

接口和异常


接口

接口是一种类型,更多体现的能力。

而接口的声明则和类的声明不同,创建一个类,使用public class xxx(){};而创建一个接口,则使用public interface xxx(){};

public interface Fly(){
	void fly();
}

接口的作用:接口的作用和父类的作用基本一致,子类必须重写接口中定义的方法。

public class Bird implements Fly{
	public void fly(){
		System.out.println("I can fly");
	}
}

接口的特征:
1.接口是用interface声明
2.接口只有抽象方法,故无方法体,当不写修饰符时,默认使用public abstract 修饰。【而在JDK1.8之后的版本,接口是支持static和default修饰的,这两种方法必须又方法体】
3.接口中的变量默认都是public static final(静态常量)修饰
4.接口不可被实例化
5.实现接口的类必须实现接口中所有的抽象方法,除非自己也是接口。
6.接口与接口之间只能extends(继承),不能使用implements(实现)
7.接口与接口之间可以使用多继承。
7.一个类可以同时实现多个接口,即类的多实现。
8.【jdk1.8】接口中的静态方法不可被继承,可以使用接口名.方法名调用。

接口与抽象类很相似,都需要子类去继承,但是他们是有区别的。

1.抽象类继承自Object类,接口不是。
2.抽线类有构造器,而接口没有。
3.抽象类中可以有普通变量和静态常量,而接口只能是静态常量。
4.抽象类中可以有普通方法,而接口中必须是抽象方法【JDK1.8之后可使用static和default修饰】
5.抽象类中可以有final方法,而接口中没有。
6.抽象类只能是单继承,多实现。而接口可以多继承其他接口,却不能实现其他接口,也不能继承其他类。


异常

程序在运行时,发生的错误。

常见的异常类型:

NullPointerException---------------------------空指针异常
ClassNotFoundException---------------------类找不到异常
ArithmeticException----------------------------数学运算异常
ArrayIndexOutOfBoundsException---------数组下标越界
ClassCastException----------------------------类型转换异常
NumberFormatException----------------------数字转换异常
SQLException------------------------------------操作数据库异常
IOException---------------------------------------输入输出流异常
FileNotFoundException------------------------文件找不到异常
InstantiationError---------------------------------实例化异常

如何捕获异常?

int[] i = new int[5];
try{
	i[5] = 0;
}catch(NullPointerException e){
	System.out.println("数组越位");
}catch(Exception e){
	System.out.println("程序异常");
}finally{
	System.out.println("程序结束");
}

使用try-catch语句可以捕获异常,使程序发生异常时,不会因为异常而中止程序的运行。
而第一个catch捕获到了空指针异常,则不会执行第二个catch,
而finally,无论程序是否异常,都会执行。
那么如何强制不运行finally呢?
可以在捕获执行语句中,添加System.exit(0);来中止程序运行。

如何声明一个异常?

可以使用关键字,throws来声明一个异常。

static void test(int a,int b) throws Exception{
	System.out.println(a/b);
}
try {
	test(3,0);
} catch (Exception e) {
	System.out.println("jvm不处理,自己处理。");
}

在test方法中声明一个异常,当执行test方法时,则需要捕获这个异常,交给jvm处理,jvm处理不了,就只能自己处理。

如果抛出一个异常?

使用throw抛出一个异常

void test(int i){
	try{
		if(i == 1){
			throw new Exception();
		}
	}catch(Exception e){
		Sysetem.out.println("程序异常");
	}
}

如上程序,当执行test方法时,传入i == 1时,则抛出一个异常,之后捕获。


overover,天冷jio冷~

猜你喜欢

转载自blog.csdn.net/Scan_13286/article/details/85082355