18.写 clone()方法时,通常都有一行代码,是什么?
Clone 有缺省行为,super.clone();因为首先要把父类中的成员复制到位,然后才是
复制自己的成员。
19.面向对象的特征有哪些方面?
抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当
前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部
分细节。抽象包括两个方面:一是过程抽象,二是数据抽象。
继承:继承是一种联接类的层次模型,并且允许和鼓励类的重用,它提供了一种明确
表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继
承了原始类的特性,新类称为原始类的派生类,而原始类称为新类的基类。派生类可以从
它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需
要。
封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对
象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些
对象通过一个受保护的接口访问其他对象。
多态性:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态
性和包含多态性。多态性语言具体灵活、抽象、行为共享、代码共享的优势,很好的解决
了应用程序函数同名问题。
20.java 中实现多态的机制是什么?
靠的是接口或接口定义的引用变量可以指向子类或具体实现类的实例对象,而程序调
用的方法在运行期才动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存
里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。
21.abstract class 和 interface 有什么区别?
含有 abstract 修饰符的 class 即为抽象类,abstract 类不能创建类的实例对象。含有
abstract 方 法 的 类 必 须 定 义 为 abstract class , abstract class 类 中 的 方 法 不 必 是 抽 象 的 。
Abstract class 类中定义抽象方法必须在具体(concrete)子类中实现,所以,不能有抽象构
造方法或抽象静态方法。如果子类没有实现抽象父类中的所有抽象方法,那么子类也必须
定义为 abstract 类型。
接口(interface)可以说成是抽象类的一个特例,接口中的所有方法都必须是抽象的。
接口中的方法定义默认为 public abstract 类型,接口中的成员变量类型默认为 public static
final。
下面比较一下两者的语法区别:
(1) 抽象类中可以有普通成员变量,接口中没有普通成员变量。
(2) 抽象类中可以有构造方法,接口中不能有构造方法。
(3) 抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不
能有非抽象的普通方法。
(4) 抽象类中的抽象方法的访问类型可以是 public、protected,但接口中的抽象方
法只能是 public 类型的,并且默认即为 public abstract 类型。
(5) 抽象类中可以包含静态方法,接口中不能包含静态方法。
(6) 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类
型可以任意,但接口中定义的变量只能是 public static final 类型,并且默认即
为 public static final 类型。
(7) 一个类可以实现多个接口,但只能继承一个抽象类。
下面再说说两者在应用上的区别: