異常
1.1 概述
用來封裝錯誤信息的對象。
組成結構:類型,提示,行號。java
1.2 異常的繼承結構
Throwable - 頂級父類 -- Error:系統錯誤,沒法修復 -- Exception:可修復的錯誤 -- RunTimeException -- ClassCastException -- ClassNotFoundException
1.3 異常處理
程序中遇到了異常,一般有兩種處理方式:捕獲 或者 向上拋出。
當調用了一個拋出異常的方法時,調用位置能夠不作處理繼續向上拋出也能夠捕獲異常。測試
測試
package cn.qile.excetiondemo; import java.util.InputMismatchException; import java.util.Scanner; //測試異常 public class Test1_Exception { public static void main(String[] args) throws Exception { // method();// 製造異常 // method2();// 處理異常 -- 捕獲 //main()調用了method3()。可是method3()會拋出異常,這是main()就須要進行異常處理 method3();// 處理異常 -- 拋出 } // 處理異常 -- 拋出 -- throws 異常類型 -- 寫在方法聲明上 public static void method3() throws ArithmeticException,InputMismatchException,Exception{ // 一、接收鍵盤輸入的整數a和b System.out.print("請輸入a的值:"); int a = new Scanner(System.in).nextInt(); System.out.print("請輸入b的值:"); int b = new Scanner(System.in).nextInt(); // 二、把ab作除法運算 System.out.println("a / b = "+a / b); } // 捕獲異常 /* * try{ code... code... code... code... code... }catch(異常類型 異常名){ 解決方案 } */ private static void method2() { try { // 一、接收鍵盤輸入的整數a和b System.out.print("請輸入a的值:"); int a = new Scanner(System.in).nextInt(); System.out.print("請輸入b的值:"); int b = new Scanner(System.in).nextInt(); // 二、把ab作除法運算 System.out.println("a / b = "+a / b); } catch (ArithmeticException e) { System.out.println("哥們,第二次輸入不能爲0 !");// 解決方案 // 多態:會發生什麼樣子的異常,全部異常的類型,我不知道...這時候用多態最完美!!! // 多態根本不關心具體子類類型,把全部子類當作父類來看 // 只須要catch 老大 Exception就可以把程序中的全部異常捕獲住作處理, // 寫出了通用代碼 } catch (Exception e) {// 多態 System.out.println("哥們,請檢查您輸入的數據類型!"); } } public static void method() { // 一、接收鍵盤輸入的整數a和b System.out.print("請輸入a的值:"); int a = new Scanner(System.in).nextInt(); System.out.print("請輸入b的值:"); int b = new Scanner(System.in).nextInt(); // 二、把ab作除法運算 System.out.println("a / b = "+a / b); } }
擴展
1 權限修飾符
用來控制一個類,或者類中的成員的訪問範圍
code
2. 向上轉型和向下轉型
在JAVA中,繼承是一個重要的特徵,經過extends關鍵字,子類能夠複用父類的功能,若是父類不能知足當前子類的需求,則子類能夠重寫父類中的方法來加以擴展。
在應用中就存在着兩種轉型方式,分別是:向上轉型和向下轉型。
好比:父類Parent,子類Child
向上轉型:父類的引用指向子類對象Parent p=new Child();
說明:向上轉型時,子類對象當成父類對象,只能調用父類的功能,若是子類重寫了父類的方法就根據這個引用指向調用子類重寫方法。對象
向下轉型(較少):子類的引用的指向子類對象,過程當中必需要採起到強制轉型。blog
Parent p = new Child();//向上轉型,此時,p是Parent類型 Child c = (Child)p;//此時,把Parent類型的p轉成小類型Child //其實,至關於建立了一個子類對象同樣,能夠用父類的,也能夠用本身的
說明:向下轉型時,是爲了方便使用子類的特殊方法,也就是說當子類方法作了功能拓展,就能夠直接使用子類功能。繼承
3. 靜態變量和實例變量的區別
在語法定義上的區別:靜態變量前要加static關鍵字,而實例變量前則不加。it
在程序運行時的區別: 實例變量屬於某個對象的屬性,必須建立了實例對象,其中的實例變量纔會被分配空間,才能使用這個實例變量。
靜態變量不屬於某個實例對象,而是屬於類,因此也稱爲類變量,只要程序加載了類的字節碼,不用建立任何實例對象,靜態變量就會被分配空間,靜態變量就能夠被使用了。
總之,實例變量必須建立對象後才能夠經過這個對象來使用,靜態變量則能夠直接使用類名來引用。io