靜態內部類及異常測試
//使用throws將異常拋給上級處理 /*public class Shoot{ static void pop()throws NegativeArraySizeException { int[] arr = new int[-3]; } public static void main(String args[]) { try { pop(); }catch(NegativeArraySizeException e){ System.out.print("異常丟擲"); } } }*/ //自定義異常使用 /*public class Tran{ static int avg(int number1,int number2)throws MyException{ if(number1<0||number2<0) { throw new MyException("不可以使用負數"); } if(number1>100||number2>100) { throw new MyException("數值太大了"); } return (number1+number2)/2; } public static void main(String []args) { try { int result = avg(99,120); System.out.println(result); } catch (MyException e) { // TODO Auto-generated catch block System.out.println(e); } } } //自定義異常 public class MyException extends Exception{ public MyException(String ErrorMessage) { super(ErrorMessage); } } */ //呼叫靜態內部類 /* public class Square { public void Square() { System.out.println("正方形"); } public static class innerClass{ int a =1; public void innerf() { System.out.println(a); } } public static void main(String args[]) { innerClass inner = new innerClass(); inner.innerf(); Square square = new Square(); } } */ //static類和非static類 /* class OuterClass{ private static String msg = "GeeksForGeeks"; // 靜態內部類 public static class NestedStaticClass{ // 靜態內部類只能訪問外部類的靜態成員 public void printMessage() { // 試著將msg改成非靜態的,這將導致編譯錯誤 System.out.println("Message from nested static class: " + msg); } } // 非靜態內部類 public class InnerClass{ // 不管是靜態方法還是非靜態方法都可以在非靜態內部類中訪問 public void display(){ System.out.println("Message from non-static nested class: "+ msg); } } } class Main { // 怎麼建立靜態內部類和非靜態內部類的例項 public static void main(String args[]){ // 建立靜態內部類的例項 OuterClass.NestedStaticClass printer = new OuterClass.NestedStaticClass(); // 建立靜態內部類的非靜態方法 printer.printMessage();
// 為了建立非靜態內部類,我們需要外部類的例項 OuterClass outer = new OuterClass(); OuterClass.InnerClass inner = outer.new InnerClass(); //這樣new出來的 // 呼叫非靜態內部類的非靜態方法 inner.display(); // 我們也可以結合以上步驟,一步建立的內部類例項 OuterClass.InnerClass innerObject = new OuterClass().new InnerClass(); // 同樣我們現在可以呼叫內部類方法 innerObject.display(); } } */