溫故而知新:Java重溫第四天
static詳解
-
static為靜態。
-
靜態變數對於類,所有物件(例項)所共享,可以直接使用類取呼叫
public class Main { public static void main(String[] args) { run();//因為是靜態的方法,所以可以直接呼叫 // dong();//不是靜態的方法不能直接呼叫 會報錯。 Main main = new Main(); main.dong();//需要建立物件後才可以呼叫方法。 } public static void run(){ System.out.println("這是靜態的方法"); } public void dong(){ System.out.println("這是動態的方法"); } }
-
提示:通過final修飾符修飾的類不可以繼承。沒有子類
抽象類
-
abstract 抽象類 : 介面 (介面可以多繼承)
-
只有方法名,沒有方法的實現
-
繼承了抽象類的子類,必須要實現抽象類中的所有方法。
-
不能new這個抽象類,只能靠子類取實現它;
-
抽象方法必須再抽象類中
介面
-
只有規範,自己無法寫方法。
-
宣告介面的關鍵字時interface
-
介面中的所有定義都是抽象的。
public interface 介面 { void sum(int a,int b); } class Sum implements 介面 { @Override public void sum(int a, int b) { int sum = a+b; System.out.println(sum); } public static void main(String[] args) { Sum s = new Sum(); s.sum(5,6); } }
-
可以看到上方程式碼中,介面無法寫具體方法,介面無法被例項化,需要在實現介面的類中寫具體的方法,之後在主方法中建立介面例項,呼叫方法。
-
介面可以多繼承,繼承多個介面,實現多個介面的方法。
-
介面不能被例項化,介面中沒有構造方法。
-
implements可以實現多個介面
-
在介面的實現類中必須重寫介面的方法。
內部類
class Outer { public void out(){ System.out.println("外部類"); } class Inner{ public void in(){ System.out.println("這是內部類"); } } } class diaoyong{ public static void main(String[] args) { Outer outer = new Outer();//這裡時建立外部類的例項以及呼叫方法 outer.out(); //建立內部類 Outer.Inner inner = outer.new Inner(); inner.in(); } }
-
上圖所示,我們可以看到在Outer類中又定義了一個類,叫做Inner類,這叫做內部類。
-
內部類不可以直接例項化,需要先建立包含著他的類,也就是Outer類,之後再根據outer類new出內部類。
-
靜態內部類無法直接訪問非靜態屬性
-
一個java類中只能由一個Public的類,可以由多個class類。
異常
Error和Exception
-
異常指的是,程式執行中出現的不期而至的各種狀態,如:檔案找不到,網路連線失敗,非法引數等。
-
異常發生在程式執行期間,它影響了正常的程式執行流程。
-
異常可簡單分為三大類,
-
檢查性異常:比如使用者錯誤或者問題引起的異常,這是程式設計師無法預見的,例如要開啟一個不存在檔案時,一個異常發生了,這些異常在編譯時不能被簡單的忽略。
-
執行時異常:執行時異常是可能被程式設計師避免的異常,與檢查性異常相反,執行時異常可以在編譯時被忽略。
-
錯誤:錯誤不是異常,而是脫離程式設計師控制的錯誤,錯誤在程式碼中通常被忽略,例如,當棧溢位時,一個錯誤就發生了,它們在編譯時也檢查不到。
-
-
Error異常
-
Exception
捕獲和丟擲異常
-
異常處理5個關鍵字:try、catch、finally、throw、throws
public class Student {
public static void main(String[] args) {
int a=1;
int b=0;
try { //try監控區域
System.out.println(a/b);
}catch (ArithmeticException e){//捕獲異常 catch(想要捕獲的異常型別)
System.out.println("程式出現異常,變數B不能為0");
}finally {//處理善後工作
System.out.println("finally");
}
}
}
-
以上catch()裡寫的是需要捕獲的異常型別,在以上的異常體系表裡可以看出,異常型別是具有等級分別的,Throwable是最高級別,包含著所有異常。
-
如果需要捕獲多個異常,需要按照異常等級從小到大捕獲。
-
可以在idea中選中語句後ctrl+alt+t快捷鍵生成捕獲異常語句
-