欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

《Java语言程序设计》(基础篇原书第10版)第十一章复习题答案

程序员文章站 2022-11-30 15:39:09
第十一章11.1:一个子类是父类的子集,说法是false11.2:extend11.3:某些程序设计语言是允许从几个类派生出一个子类的。这种能力称为多重继承( multiple inheritance)。但是在 Java 中是不允许多重继承的。一个 Java 类只可能直接继承自一个父类。这种限制称为单一继承( single inheritance)。11.4:a)中类的输出结果为:A’s no-arg constructor is invoked ; 创建B类的对象时,首先会构造B类的函数,在该程...

第十一章
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