JAVA內部類與異常類
阿新 • • 發佈:2019-01-03
內部類
定義
在類A中聲明瞭類B,B稱為內部類,A稱為B的外嵌類
應用
需要建立一個類,不想它為外界所用
public class RedCowform{ static String formName = "紅牛農場"; Redcow cow;// 宣告 public RedCowform(){ cow = new RedCow(); } class RedCow{ String Name; int height,weight,price; RedCow(){ //賦值 可以使用外嵌類的方法 } } void speak(){ //輸出 } }
補充說明
- 繼承:外嵌類的子類能夠繼承該類的內部類
public class NewRedcowform extends Redcowform{
// 能使用redcow的方法
}
內部類也能繼承其他類
訪問外嵌類的同名變數\方法
Outer.this.name=''
匿名類
定義
class People{ void print(){ System.out.println("I am a People"); } } public class Test{ public static class(){ public static void main(String[] args){ People stu = new People(){ void print(){// 對方法重寫 System.out.println("I am a Student"); } }; } stu.print(); } }
Pet newpet = new Pet(){
public void speak(){
System.out.println("sadd");
}
};
newpet.speak();
異常類
try-catch語句
try{
//包含可能發生異常的語句 發生異常即轉向catch
}catch(/*Exception的某個子類*/){
}
自定義異常類
public class DangerException extends Exception{ String message; public DangerException(int n){ message="第"+n+"個物品危險"; } public void toShow(){ System.out.println(message); } }
創造一個Exception的子類
其他
/*丟擲異常的處理*/
class Machine{
public void checkBag(Goods goods) throws DangerException {
if(goods.isDanger==true) throw new DangerException(goods.num);
System.out.println("第"+goods.num+"個物品安全");
}
}
/*商品屬性*/
class Goods{
boolean isDanger;
int num;
public Goods(boolean m,int n){
isDanger = m;
num=n;
}
}
public class Main{
public static void main(String[] args){
Machine machine = new Machine();
Goods goods = new Goods(false,1);
Goods goods2 = new Goods(false,3);
Goods goods1 = new Goods(true,5);
Goods goods3 = new Goods(false,8);
try{
machine.checkBag(goods);
machine.checkBag(goods2);//繼續執行或者丟擲異常
machine.checkBag(goods1);
machine.checkBag(goods3);
} catch (DangerException e) {// catch到異常
System.out.println("危險警告!!!!");
e.toShow();
}
}
}