【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;}
语法错误
相关文章
相关标签/搜索