第一题:
A 派生出子类 B , B 派生出子类 C ,并且在 java 源代码有如下声明:
- A a0=new A();
- A a1=new B();
- A a2=new C();
问以下哪个说法是正确的?()
我们来看题目中的三行代码:
A a0 = new A();
这行代码创建了一个A类的实例,并将其赋值给一个A类型的引用变量a0。这是完全合法的,因为a0是一个A类型的引用,可以指向A类的实例。
A a1 = new B();
这行代码创建了一个B类的实例,并将其赋值给一个A类型的引用变量a1。这也是合法的,因为B类是A类的子类,根据多态性,父类引用可以指向子类对象。
A a2 = new C();
这行代码创建了一个C类的实例,并将其赋值给一个A类型的引用变量a2。这同样是合法的,因为C类是B类的子类,而B类又是A类的子类。因此,A类型的引用可以指向C类的实例。
综合选D. 第1行,第2行和第3行的声明都是正确的。
第二题:
以下说法错误的是:
B:重写要求两个方法名字相同, 同时参数的类型和个数相同,并且返回值类型也必须相同(或者返回值类型是父类方法返回值类型的子类型,这称为协变返回类型)。
这里可以回顾一下重写和重载的对比:
第三题:
关于抽象类的说法以下正确的是:
A. 某个抽象类的父类是抽象类,则这个子类必须重载父类的所有抽象方法
- 这是错误的。如果子类也是抽象类,则不需要重载父类中的抽象方法。且非抽象类的子类只需要重载它直接继承的父类中的方法。
B. 接口和抽象类是同一回事
- 这是错误的。接口和抽象类在Java中是不同的概念。接口只包含抽象方法和常量,而抽象类可以包含抽象方法和具体方法,还可以包含成员变量。
C. 可以用抽象类直接去实例化创建对象
- 这是错误的。抽象类不能被实例化,只能被继承。
D. 一个类只能继承一个抽象类
- 这是正确的。Java中的类是单继承的,即一个类只能继承一个父类,包括抽象类。
第四题:
public interface IService {String NAME=“default”;}
默认类型等价表示是哪一项:
接口当中的成员变量默认是:public static final
接口当中的成员方法默认是:public abstract
一般定义的时候不加,也是默认为以上的形式存在的,所以选 C
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » 多态(作业篇)
发表评论 取消回复