Bootstrap

抽象类和接口以及异常处理

抽象类

抽象类与抽象方法的使用

1.抽象类中可以没有抽象方法,但包含了抽象方法的类必须被定义为抽象类

2.如果子类没有实现父类的所有抽象方法,子类必须被定义为抽象类

3.没有抽象构造方法,也没有抽象静态方法

4.抽象类中可以有非抽象的构造方法,创建子类的实例时可能调用

接口

public interface MyInterface {
    public void foo();
    //其他方法
}

接口是一种约定

接口是一种能力

接口的特性

1.接口不可以被实例化

2.实现类必须实现接口的所有方法

3.实现类可以实现多个接口implements、多个接口使用逗号隔开

4. 接口中的变量都是静态常量(public static final)

定义接口

使用interface关键字

package com.hz.ch06.Test05;

public interface Computer {
	public abstract int computer(int n ,int m);

}

接口使用

使用implements关键字,多个接口用逗号隔开

package com.hz.ch06.Test05;

public class Jia implements Computer{

	@Override
	public int computer(int n, int m) {
		// TODO 自动生成的方法存根
		return n+m;
	}

}

异常处理

​
try{
可能会报错的代码
}catch(Exception e) {
异常处理代码
}
try{
可能会报错的代码
}catch(Exception e) {
异常处理代码
}finally{
不管程序是否报错都执行
}

​

抛出异常

使用关键字throws

package com.hz.ch07;

public class Student {
	private int age;

	public int getAge() {
		return age;
	}

	public void setAge(int age) throws Exception
	
	{
		if(age>=1&&age<=100) {
		this.age = age;
	}
		else {
		throw new Exception("年龄必须在1-100之间");
	}
	}
	public void show() {
		System.out.println(getAge());
	}

}
package com.hz.ch07;

public class Test {
	public static void main(String[] args) {
		Student a = new Student();
		
		try {
			a.setAge(110);
			a.show();
		} catch (Exception e) {
			System.err.println("An exception occurred: " + e.getMessage());
		    e.printStackTrace();
		}
	}

}

声明异常

制造异常,使用关键字 throw

throw new Ch06Exception("没有A4纸了");

自定义异常

public class Ch06Exception extends RuntimeException {
public Ch06Exception(String message) {
super(message);
}
}

;