實驗六 類的繼承
一、實驗目的
(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("不管是否出現異常,都執行此代碼");
}
}
}
2、實驗結果
二、自定義異常類的使用
車站檢查危險品的設備,如果發現危險品會發出警告。編程模擬設備發
現危險品。
技術方案:
編寫一個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<String> list=new ArrayList<String>();
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()+":不是危險品");
}
}
}
2、實驗結果
三、總結
多線程
多線程的實現有兩種方法繼承Thread類和使用Runnable接口
Thread類不共享,Runnable接口共享。
格式
class 類名稱 extends Thread{
屬性...;
方法...;
public void run(){
線程主體;
}
}
實現多線程不是調用run()方法,而是start()方法。