【346天】我愛刷題系列105(2018.01.17)

叨叨兩句

  1. ~

牛客網——java專項練習084

1

下面所示的java代碼,運行時,會產生()類型的異常java

int Arry_a[] = new int[10];
System.out.println(Arry_a[10]);

正確答案: D
A ArithmeticException
B NullPointException
C IOException
D ArrayIndexOutOfBoundsExceptionthis

java.lang.NumberFormatException 數字格式異常。當試圖將一個String轉換爲指定的數字類型,而該字符串確不知足數字類型要求的格式時,拋出該異常

ArithmeticException是出現異常的運算條件時,拋出此異常。例如,一個整數「除以零」時,拋出此類的一個實例

2

class A{
    public A foo(){return this;}
}
class B extends A{
    public A foo(){
        return this;
    }
}
class C extends B

{
    _______

}

能夠放入到橫線位置,使程序正確編譯運行,並且不產生錯誤的選項是( )code

正確答案: C 你的答案: C (正確)
A public void foo(){}
B public int foo(){return 1;}
C public A foo(B b){return b;}
D public A foo(){return A;}orm

複習一會兒類方法重寫父類方法遵循「兩同兩小一大」的規則

子類覆蓋父類要遵循「兩同兩小一大」

「兩同」即方法名相同,形參列表相同

「兩小」指的是子類方法返回值類型應比父類方法返回值類型更小或相等,子類方法聲明拋出的異常類應比父類方法聲明拋出的異常類更小或相等。

  (注:看到有網友有這樣的疑問,父類方法返回值是double,子類修改爲int爲何不行呢?

這是由於返回值類型更大或者更小,是對於同一類型而言的。也就是說,返回值的類型須要有繼承關係纔去考慮大小這個概念。類型不一樣,確定不是方法重寫)

「一大」指的是子類方法的訪問權限應比父類方法的訪問權限更大或相等。

注意:覆蓋方法和被覆蓋方法要麼都是類方法,要麼都是實例方法,不能一個是類方法一個是實例方法,不然編譯出錯。

因此,根據這個原理,再來分析上面這道題。

A.public void foo(){}
返回值類型與父類不一致,因此不多是方法的重寫。又由於方法名相同,那麼只能是方法重載,而方法重載有須要知足三個條件:形參個數、順序、類型必須有一者不一樣,A選項都不知足,錯

B.public int foo(){return 1;}
與A選項同樣

C.public A foo(B b){return b;}
返回值類型與父類相同,但因爲參數列表不一樣,因此是對父類方法的重載

D.public A foo(){return A;}
語法錯誤
相關文章
相關標籤/搜索