《Java语言程序设计》(基础篇原书第10版)第十一章复习题答案
第十一章
11.1:一个子类是父类的子集,说法是false
11.2:extend
11.3:某些程序设计语言是允许从几个类派生出一个子类的。这种能力称为多重继承
( multiple inheritance)。但是在 Java 中是不允许多重继承的。一个 Java 类只可能直接继承自一个父类。这种限制称为单一继承( single inheritance)。
11.4:a)中类的输出结果为:A’s no-arg constructor is invoked ; 创建B类的对象时,首先会构造B类的函数,在该程序内,是构造B类的无参构造函数,但在构造B类前,会首先构造父类A类的无参构造函数,因为A类显式的定义了构造方法,所以没有无参构造方法。
11.5:利用super关键字调用父类的构造方法,super()或者super(argument)。
11.6:false,如果父类的显式的定义了构造方法,那么在子类构造无参方法前,无法调用父类的无参构造方法。
11.7:false,只能重写父类的可访问的方法
11.8:false,只能重写父类的可访问的方法
11.9:利用super()或者super(arguments),而且super语句必须写在第一行。
11.10:利用super.method()或者super.method(args).
11.11:第5行:this.radius = radius;
第21行:super(radius);
第22行:this.length = length;
第27行:super.getArea() * length;
11.12:重栽意味着使用同样的名字但是不同的签名来定义多个方法。重写意味着在子
类中提供一个对方法的新的实现。方法重写发生在通过继承而相关的不同类中;方法重载可以发生在同一个类中,也可以发生在由于继承而相关的不同类中。方法重写具有同样的签名和返回值类型;方法重载具有同样的名字,但是不同的参数列表.
11.13:方法重写
11.14:这将是一个语法错误。
11.15:方法重载。
11.16:它强制编译器检查重写方法的签名,以确保正确定义该方法。
11.17:多态意味着父类的变量可以指向子类对象。方法可以在沿着继承链的多个类中实现。JVM 决定运行时调用哪个方法,这就是动态绑定。
11.18:匹配方法的签名和绑定方法的实现是两个不同的问题。引用变虽的声明类型决定了编译时匹配哪个方法。在编译时,编译器会根据参数类型、参数个数和参数顺序找到匹配的方法。一个方法可能在沿着继承链的多个类中实现dava 虚拟机在运行时动态绑定方法的实现,这是由变量的实际类型决定的。
11.19:new int[50]不能赋值给Object[]类型的变量,但是new Integer[50],new String[50]或者new Object[50]可以赋值给Object[].
11.20:第8行错误,因为int[]不能赋值给Object[].
11.21:输出结果为:
(1)Person Person
Student Person
11.22:输出结果为:B’s constructor is invoked A’s constructor is invoked
在调用new A(3)时,将调用对象的默认构造函数,在执行B的构造函数中的任何语句前调用对象的构造函数。
11.23:输出结果为:
I from A is 40
I from A is 60;
I from B is 60;
11.24:True :总可以将子类实例转换为父类;
False :父类的实例不一定都可以转换成子类。
11.25:
(circle instanceof GeometricObject) true
(object instanceof GeometricObject) true
(circle instanceof Circle) true
(object instanceof Circle) false
b. 下面的语句能够成功编译吗?
Circle circle = new Circle(5); 可以成功编译
GeometricObject object = circle;
c. 下面的语句能够成功编译吗? 不能成功编译
GeometricObject object = new GeometricObjectO;
Circle circle = (Circle)object;
11.26:
A)true
B)false
C)true
D)true
E)false
F)true
G)true
H)false
I)可以 ; 不可以
J)可以 ; 不可以
K)不合法
L)不合法
M)合法
11.27:语句Object apple = (Apple)fruit;会导致ClassCastingException错误。
11.28:是的,每一个对象都有toString方法和equals方法,因为他们来自Object类,并且他们也是java类所可以访问的,重写这些方法合适。
11.29:输出结果为:a)False b)True
11.30:
A) ArrayList list = new ArrayList ();
B) list.add(object);
C) list.add(0, object);
D) list.size();
E) list.remove(object);
F) list.remove(list.size() - 1);
G) list.contains(object);
H) list.get(index)
11.31:list.add(new java.util.DateO);错误,因为你创建的是字符串数组,而不是Date类型的数组;list.set(3,“Dallas”);System.out println(list.get(3)); 语句错误,因为无法找到下标为3的数组元素。
11.32:调用一次list.remove(“Dallas”)后的列表为{“Dallas”,“Houston”,“Dallas”},
修改列表,使得删除所有具有值“Dallas”。
for (int I = 0; I < list.size(); i++){
if (list.remove(“Dallas”))
i–;
}
11.33:因为ArrayList类有两种重载方法,分别是remove(index)和remove(object),所以list.remove(1)表示去除下标为1的元素,所以结果为[2, 3]
11.34:是double型的数据,所有改为list.add(1.0);
11.35:改为:
ArrayList array = {3, 5, 95, 4, 15, 34, 3, 6, 5};
ArrayList list = new ArrayList<> (Arrays.asList(array));
11.36:改为:
ArrayList array = {3, 5, 95, 4, 15, 34, 3, 6, 5};
11.37:default修饰符
11.38:protected修饰符
11.39:可以; 不可以; 可以
11.40:不可以; 不可以; 可以
11.41:使用final关键字。
11.42:
a)true
b)false
c)true
d)true
e)false
f)false
本文地址:https://blog.csdn.net/qq_37500052/article/details/107267542