抽象类在Java语言中表示的是一种继承关系,一个类只能使用一次继承.但是一个类却可以实现多个接口.

如题所述

第1个回答  2019-06-20
A选项,对。java中类之间只能够实现单继承,即就是说一个类只能有一个父类,但允许多层继承,即就是一个类有一个父类,该父类还可以有自己的一个父类。举个例子:假如A能够继承类B和C,但当B,C中有相同的方法时,让A来调用,那么,A到底调用的父类中谁的方法呢?所以,java中类只能够实现单继承。
但,类对于接口的话,类可以实现多个接口,即使不同接口有相同的抽象方法,子类默认也只会实现一个。
B选项,对。抽象类可以没有抽象方法。但是有抽象方法的类一定是抽象类。
C选项,不对。不对是因为前半句,实现抽象类和接口的如果是非抽象类的话,该非抽象类就必须实现其中所有的抽象方法,而不是所有方法,因为抽象类还可以有其他方法体跟实现。

但假如实现抽象类和接口的是抽象类的话,那么抽象类就可以不用实现所有方法(所有方法包括父类或接口的所有抽象方法)(意思就是,该抽象类需要哪个抽象方法了就去实现,不需要了就不用去实现)。
后半句正确,接口和抽象类中的抽象方法只有声明(即定义方法)不能有实现,这些抽象方法存在目的是让子类重写。
因为接口中只能定义抽象方法,故而C选项说的接口中的方法都不能被实现,是对的。
但抽象类可以有非抽象的方法和其方法的具体的方法,比如抽象类的构造方法(只是该构造方法不能被new实例化)。
D选项,对。解释下D选项,接口中需要定义成员变量时,该成员变量必须定义为常量,然而定义常量那就必须用final来修饰,再者,该常量对于实现接口的所有实现类只能有一份,故而必须用静态的static来修饰,再加上接口必须要具体类来实现才有意义,所以必须是public来修饰。并且,在定义该成员变量时必须进行直接赋初始值!如:public static final int age = 10;而不是像只由final修饰的成员变量那样,即可以直接赋值,也可以在构造方法里面赋值。同时,既然被final修饰了,那么该变量已经成为最终变量了,那么该值当然是不可变的,也是不可以被重新定义的了。
E选项,对。接口必须要具体类来实现才有意义,所以必须是用public来修饰接口中的抽象方法的,同时,省略不写public的时候,默认还是public修饰符。
同时,实现接口的子类,在定义重写子类方法的访问级别不能低于父类相应方法的访问级别。
相似回答