重写 Overriding 是父 类与子类之间多态性的一种表现,重载 Overloading 是一个类中多态性的一种表现。如果在子类中定 义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个 方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了 多个同名的方法, 它们或有不同的参数个数或有不同的参数类型, 则称为方法的重载(Overloading)。 Overloaded 的方法是可以改变返回值的类型。 26,Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是 equals()? 它们有 何区别? Set 里的元素是不能重复的,那么用 iterator()方法来区分重复与否。equals()是判读两个 Set 是否相等。 equals()和==方法决定引用值是否指向同一对象 equals()在类中被覆盖,为的是当两个分离的 对象的内容和类型相配的话,返回真值。 27,给我一个你最常见到的 runtime exception。 ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFORMatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException 28,error 和 exception 有什么区别? error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程 序能处理这样的情况。 exception 表示一种设计或实现问题。 也就是说, 它表示如果程序运行正常, 从不会发生的情况。 29,List, Set, Map 是否继承自 Collection 接口? List,Set 是 Map 不是 30,abstract class 和 interface 有什么区别? 声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某 些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建 abstract 类的实 例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构 造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是 抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。 接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这 样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义 static final 成员变量。 接口的实现与子类相似, 除了该实现类不能从接口定义中继承行为。 当类实现特殊接口时, 它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调 用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。