实验六 类的继承
一、实验目的
(1) 理解异常的基本概念:
(2) 掌握异常处理方法及熟悉常见异常的捕获方法。
二、实验要求
(1) 练习捕获异常、声明异常、抛出异常的方法、然悉try和catch子句的使用。
(2) 掌握自定义异常类的方法。
三、实验内容
(一)编写一个类,在其main(方法中创建一个一维数组,在try字句中
访问数组元素,使其产生ArrayIndex0utOfBoundsException异常。
在catch 子句里捕获此异常对象,并且打印“数组越界”信息,加
一个finally子句,打印一条信息以证明这里确实得到了执行。
1、实验代码
package yichang;
public class Exceptiondemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a[]= {1,2,3,4,5};
try {
for(int i=0;i<=5;i++) {
System.out.println(a[i]);
}
}catch(ArrayIndexOutOfBoundsException e) {
System.out.println("数组越界");
}finally {
System.out.println("不管是否出现异常,都执行此代码");
}
}
}
二、自定义异常类的使用
车站检查危险品的设备,如果发现危险品会发出警告。编程模拟设备发
现危险品。
技术方案:
编写一个Exgeption的子类 DangerException,该子类可以创建异常对
象,该异常对象调用 toShowO方法输出“危险物品”。编写一个
Machine 类,该类的方法 checkBeg(Goods goods)当发现参数 goods是
危险品时(goods 的 isDanger属性是true)将抛出DangerException
异常。
程序在主类的main(方法中的 try-catch语句的try部分让Machine
类的实例调用 checkBeg (Goods goods)的方法,如果发现危险品就在
try-catch 语句的 catch 部分处理危险品。
1、实验代码
①
package 危险品;
import java.util.ArrayList;
public class Check {
public static void main(String[] args) {
ArrayList list=new ArrayList();
list.add("油");
list.add("烟");
list.add("枪");
list.add("零食");
list.add("酒");
list.add("刀");
String name=list.get(5);
Goods good = new Goods(name);
good.setDanger(true);
Machine mc=new Machine();
try {
mc.checkBag(good);
System.out.println(good.getName() + ":检查通过");
}catch(DangerException e) {
e.toShow();
System.out.println(good.getName() + ":未通过");
}
}
}
②
package 危险品;
public class DangerException extends Exception {
private static final long serialVersionUID = 1L;
private String message;
public DangerException(String message) {
super();
this.message = message;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public void toShow() {
System.out.println("危险物品:"+message);
}
}
③
package 危险品;
public class Goods {
private boolean isDanger;
private String name;
public boolean isDanger() {
return isDanger;
}
public void setDanger(boolean isDanger) {
this.isDanger = isDanger;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Goods(String name) {
this.name = name;
}
}
④
package 危险品;
public class Machine {
public void checkBag(Goods goods) throws DangerException{
if(goods.isDanger()==true) {
throw new DangerException(goods.getName());
}
else {
System.out.println(goods.getName()+":不是危险品");
}
}
}
三、总结
多线程
多线程的实现有两种方法继承Thread类和使用Runnable接口
Thread类不共享,Runnable接口共享。
格式
class 类名称 extends Thread{
属性...;
方法...;
public void run(){
线程主体;
}
}
实现多线程不是调用run()方法,而是start()方法。