Java2程序设计基础第八章课后习题

  1. 子类将继承父类的所有成员吗?为什么?
    不能,子类只能从父类那里继承所有非private的成员作为自己的成员。
  2. 在子类中可以调用父类的构造方法吗?若可以,如何调用?
    可以,在子类的构造方法中通过super()来调用父类特定的构造方法。
  3. 在调用子类的构造方法之前,会先自动调用父类中没有参数的构造方法,其目的是什么?
    其目的是为了帮助继承自父类的成员做初始化的操作。
  4. 在子类中可以访问父类的成员吗?若可以,用什么方式访问?
    可以,super.<变量名>; super.<方法名>;
  5. 用父类对象变量可以访问子类的成员吗?若可以,则只限于什么情况?
    可以,只限于“覆盖”的情况发生时。也就是说,父类与子类的方法名称、参数个数与类型必须完全相同,才可通过父类的变量调用子类的方法。如果某一方法仅存在于子类中,当以父类变量调用它时,编译时将产生错误。
  6. 什么是“多态”机制?Java语言是如何实现多态的?
    相同类型的变量、调用同一个方法时呈现出多种不同的行为特征,这就是多态。
    覆盖与重载均是Java语言多态的技巧之一。
  7. 方法的“覆盖”与方法的“重载”有何不同?
    覆盖是指在子类中,定义名称、参数个数与类型均与父类相同的方法,用以重写父类里同名方法的功能。
    重载是指在同一个类内定义名称相同,但参数个数或类型不同的方法,因此Java可根据参数的个数或类型的不同来调用相应的方法。
  8. this和super分别有什么特殊的含义?
    super是从子类的构造方法调用父类的构造方法
    this是在同一个类内调用其他的构造方法
  9. 什么情况下父类对象的引用可以用强制类型转换转化成为子类对象的引用?
    子类中总会有父类没有的方法,所以什么情况下都不能将父类的引用强制类型转换为子类的引用。
(子类) new 父类;
  1. 什么是最终类与最终方法?它们的作用是什么?
    如果一个类被final修饰符所修饰,则说明这个类不能再被其他类所继承,即该类不可能有子类,这种类被称为最终类。
    如果用final修饰成员方法,则该成员方法不能再被子类所覆盖,即该方法为最终方法。对于一些比较重要且不希望被子类重写的方法,可以使用final修饰符对成员方法进行修饰,这样可以增加代码的安全性。
  2. 什么是抽象类与抽象方法?使用时应注意哪些问题?
    在Java语言中还可以创建专门的类来作为父类,这种类被称为抽象类。
    并不能直接由抽象类创建对象,只能通过抽象类派生出新的子类,再由其子类来创建对象。
  3. 什么是接口?为什么要定义接口?
    接口的结构与抽象类非常相似,其本身也具有数据成员与抽象方法,但它与抽象类有下列不同:
    (1)接口的数据成员必须初始化;
    (2)接口中的方法必须全部都声明为abstract的,即接口不能像抽象类一样拥有一般的方法,而必须全部是抽象方法。
    接口可以实现类的多重继承。
  4. 如何定义接口?接口与类有哪些异同?
[public] interface 接口名称 [extends 父接口名列表]
{
	[public][static][final] 数据类型 成员变量名 = 常量;
	...
	[public][abstract] 返回值的数据类型 方法名(参数表);
	...
}

接口与一般的类一样,本身也具有成员变量与成员方法,但接口的成员变量一定要赋初值,且此值不能再被修改,若省略成员变量的修饰符,系统默认为public static final;而其成员方法必须是抽象方法,方法前即使省略修饰符,系统仍然默认为public abstract。

  1. 内部类的类型有几种?分别在什么情况下使用?它所起的作用有哪些?
    内部类:定义在类中的类,主要作用是将逻辑上相关的类放到一起;
    匿名类:特殊的内部类,没有类名,在定义类的同时,就生成该类的一个实例,由于不会在其他地方用到该类,所以不用取名字。
  2. 内部类与外部类的使用有何不同?
    内部类是包含在类中的类,包含内部类的类又称为外部类。
    在封装内部类的外部类内使用内部类,与普通类的使用方式相同,但在外部引用内部类时,则必须在内部类名前冠以其所属外部类的名字才能使用。在用new运算创建内部类时,也要在new前面冠以对象变量。
  3. 怎样使用匿名内部类对象?
(
	new 类名()
	{
		方法名(参数1,参数2,...,参数n)
		{
			方法体语句;
		}
	}
).方法名(参数1,参数2,...,参数n);
  1. 什么是包?它的作用是什么?如何创建包?如何引用包中的类?
    包就是Java语言提供的一种区别类名空间的机制,是类的组织方式,包对应一个文件夹,包中还可以再有包,称为包等级。
    包实际上提供了一种命名机制和可见性限制机制。
package 包名1[.包名2[.包名3]...];
import <包名1>[.<包名2>[.<包名3>...]].<类名> | *
  1. Java中怎样清除对象?能否控制Java程序中垃圾的回收时间?
    在Java程序的生命周期中,Java运行环境提供了一个系统的垃圾回收器线程,负责自动回收那些没有引用与之相连的对象所占用的内存,这种清除无用对象进行内存回收的过程就叫做垃圾回收。
    不能,回收的时间对程序员是透明的,在任何时候,程序员都不能通过程序强迫垃圾回收器立即执行。

注:练习均为博主自己编写,不是标准答案,可能存在问题,可以留言讨论。

  • 11
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值