1. 程式人生 > >JAVA內部類與異常類

JAVA內部類與異常類

內部類

定義

在類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();
        }
    }
}