(说明部分请参见Java程序设计2 第七章课后习题)
1.子类将继承父类的所有成员吗?为什么?
答:不能,因为当父类的成员被声明为private时子类是无法继承的
2.在子类中可以调用父类的构造方法吗?若可以,如何调用?
答:可以
在子类中可以通过super()来调用父类的构造方法
3.在调用子类的构造方法之前,会先自动调用父类中没有参数的构造方法,其目的是什么?
答:其目的是为了帮助继承自父类的成员做初始化的操作
4.在子类中可以访问父类的成员吗?若可以。用什么方式访问?
答:可以
可以通过super.<变量名>、super.<方法名>来分别访问父类的成员变量和成员方法
5.用父类对象变量可以访问子类的成员吗?若可以,则只限于什么情况?
答:可以
只限于"覆盖"的情况发生时,也就是说,父类与子类的方法名称、参数个数与类型必须完全相同,才可通过父类的变量调用子类的方法
6.什么是"多态机制"?Java语言是如何实现多态的?
答:①"多态机制"是指一个程序中同名的多个不同方法共存的情况,即一个对外接口,多个内在的实现方法
②Java语言通过子类对父类方法的覆盖实现多态,也可以利用重载在同一个类中定义多个同名的不同方法来实现多态
7.方法的"覆盖"与方法的"重载"有何不同?
答:重载是指在同一个类内定义名称相同,但参数个数或者类型不同的方法,而覆盖则是指在子类中,定义名称、参数个数与类型均与父类相同的方法,用以重写父类里同名方法的功能
8.this和super分别有什么特殊的含义?
答:super()与this的功能相似,但super()是从子类的构造方法调用父类的构造方法,而this则是在同一个类内调用其他的构造方法。当构造方法有重载时,super()与this()均会根据所给出的参数类型与个数,正确的执行相对应的构造方法
9.什么情况下父类对象的引用可以用强制类型转换转化成子类对象的引用?
答:如果父类对象引用指向的实际是一个子类对象,则这个父类对象的引用可以用强制类型转换成子类对象的引用
10.什么是最终类与最终方法?它们的作用是什么?
答:①最终类是指被final修饰符所修饰,不能再被其他类所继承的类;最终方法是指所有已被private修饰符限定为私有的方法,以及所有包含在final类中的方法
②它们的作用是增加代码的安全性,因为最终类与最终方法不能再被子类所覆盖,对于一些比较重要且不希望被子类重写的方法、类来说是很有必要的
11.什么是抽象类与抽象方法?使用时应注意哪些问题?
答:①用关键字abstract修饰的类就是抽象类;没有方法体的方法,且首部用关键字abstract修饰,就是抽象方法。
②需要注意的是:由于抽象类是需要被继承的,所以abstract类不能用final来修饰;abstract不能与private、static、final、或native并列修饰同一方法;习惯上,在类说明中,关键字public或private放在final或abstract的前面
12.什么是接口?为什么要定义接口
答:接口是一个类所具有的方法的特征集合,是一种逻辑上的抽象
因为接口可以隐藏实施细节和实现多重继承
13.如何定义接口?接口与类有哪些异同?
答:接口的定义:
public interface 接口名称 [extends 父类口名列表]
{
[public][static][final] 数据类型 成员变量名=常量;
......
[public][abstract] 返回值的数据类型 方法名(参数表);
......
}
接口只定义方法但没有实现,只有在实现接口的类中去实现,但是类中的所有方法都是实现的(抽象类除外)
接口可以多重继承,但抽象类不可以
14.内部类的类型有几种?分别在什么情况下使用?它所起的作用有哪些?
答:java中的内部类按功能包括静态内部类(相当于嵌套类)、非静态内部类(可以访问外部类对象outer的实例成员包括私有成员)、本地内部类(甚至可以访问局部变量和形参)、匿名本地内部类。
15.内部类与外部类的使用有何不同?
答:内部类不能与包含它的外部类名相同
内部类既可以使用外部类的成员变量,也可以使用内部类所在的方法的局部变量
16.怎样使用匿名内部类对象?
答:利用new运算符创建匿名内部类对象,用setName()方法进行定义。
17.什么是包?它的作用是什么?如何创建包?如何引用包中的类?
答:包就是java语言提供的一种区别类名空间的机制,是类的组织方式,包对应一个文件夹,包中还可以 再有包。
作用:用来管理具有相互关系的部分类。
创建:package 包名1[包名.2[.包名3]……]
引用包中的类:import<包名1>[.<包名2.>[<包名3>……]].<类名>|
18.Java中怎样清除对象?能否控制Java程序中垃圾的回收时间?
答:使用java提供的垃圾回收器清除对象。
不能通过程序强迫垃圾回收器立即执行,但可以调用System.gc()或Runtime.gc()方法提示垃圾回收器进行内存回收操作
说明:关于接口、内部类等一些概念书上的介绍很少,而且正好讲到这一章的时候老师感冒了,讲得很简单,留了大部分时间让我们自己去看,所以这些东西还是没能很好的理解。14.15.16这三个题没能在书上找到答案,刚好自己又不会,费了很大的力气从网上找到了的答案,但还是看得不大懂!
see Yizero by yizero.com