多態與異常處理

來源:互聯網
上載者:User

標籤:

(1)怎樣判斷對象是否可以轉換?參看執行個體: TestInstanceof.java

運行結果:

 

(2)運行TestCast.java

 

d=m;d=c;c=(Cat)m;出現錯誤

(3)運行ParentChildTest.java

1.程式運行結果是什嗎?

 

  1. 你如何解釋會得到這樣的輸出?

第一個輸出建立了一個Parent對象,所以調用父類的建構函式。

第二個輸出建立了一個Child對象,所以調用子類的建構函式。

將子類child對象賦值給父類,將父類覆蓋調用了子類的建立方法。

第四個parent.myValue++是對父類的變數進行運算,而parent.myValue()實際上調用的還是子類的構造方法。

第五個((Child)parent).myValue++強制類型轉化。

子類和父類具有相同的方法和欄位,定義的parent為父類,child為子類,所以parent調用父類的方法,child調用子類型的方法。子類中的myValue值代替或隱藏父類值。

3.   電腦是不會出錯的,之所以得到這樣的運行結果也是有原因的,那麼從這些運行結果中,你能總結出Java的哪些文法特性?

當子類與父類擁有一樣的方法,並且讓父類變數引用一個子類對象時,到底調用那個方法,由對象自己真實類型決定:對象時子類的,它就調用子類的方法,是父類型的,它就調用父類型的方法。

如果子類與父類有相同的欄位,則子類中的欄位會代替或隱藏父類的欄位,子類方法中訪問的是子類中的欄位(而不是父類中的欄位)。如果子類方法確實想訪問父類中被隱藏的同名欄位,可以用super關鍵字來訪問它。

如果子類被當作父類使用,則通過子類訪問的欄位是父類的。

閱讀並運行AboutException.java樣本

 

EmbedFinally.java程式啟動並執行結果

 

辨析:finally語句塊一定會執行嗎?

請通過 SystemExitAndFinally.java樣本程式回答上述問題

 

不一定執行。Try塊中有System.exit(0);這樣的語句,finally語句不會執行。

 PrintExpressionStack.java樣本

 

 

Java異常處理總結:

一般構造如下

try{程式碼}catch(異常類型1 異常的變數名1){程式碼}catch(異常類型2 異常的變數名2){程式碼} finally{程式碼}

catah可以有多個,用來匹配多個異常,匹配上多個中的一個後,執行catch語句塊時僅僅執行匹配的異常。Catch的類型是自己定義的,表示代碼拋出異常類型,異常的變數名表示拋出的異常對象的引用。

ExceptionLinkInRealWorld.java運行

 

 

動手動腦:

實驗要求:

編寫一個程式,此程式在運行時要求使用者輸入一個 整數,代表某門課的考試成績,程式接著給出“不及格”、“及格”、“中”、“良”、“優”的結論。

原始碼:

import java.util.InputMismatchException;

import java.util.Scanner;

 

public class Test {

 

public static void main(String[] args) {

// TODO 自動產生的方法存根

int n;             

Scanner sc=new Scanner(System.in);

System.out.println("請輸入一個整數(0~100):");

int i=0;  //控制出入正確時,判斷完成結束程式

for(;;)   //迴圈,直到輸入正確

{

try

{

  n=sc.nextInt();

  if(n<0||n>100){  //判斷整數範圍是否正確

  System.out.println("輸入整數不在範圍!");

  }

  else{

  

       i=1;

       if(n<60&&n>=0){

        System.out.println("不及格");

          }

       else if(n<70){

        System.out.println("及格");

          }

       else if(n<80){

        System.out.println("中");

          }

       else if(n<90){

            System.out.println("良");

          }

       else if(n<=100){

        System.out.println("優");

          }

      }

 }

        catch(InputMismatchException e)

{

         sc.next();//讀取到有效字元後才可以結束輸入

         System.out.println("輸入格式不正確,請輸入整數(0~100)!");

            

}

if(i==1)//結束迴圈

{

break;

}

 

}

}

 

}

運行結果:

 

多態與異常處理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.