1.
关于抽象类的几点说明:
抽象类不能直接使用,必须用子类去实现抽象类,然后使用其子类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例,也就是可以使用抽象类来充当形参,实际实现类作为实参,也就是多态的应用。不能有抽象构造方法或抽象静态方法。 在下列情况下,一个类将成为抽象类: 当一个类的一个或多个方法是抽象方法时;当类是一个抽象类的子类,并且不能为任何抽象方法提供任何实现细节或方法主体时;当一个类实现一个接口,并且不能为任何抽象方法提供实现细节或方法主体时;注意: 这里说的是这些情况下一个类将成为抽象类,没有说抽象类一定会有这些情况。一个典型的错误:抽象类一定包含抽象方法。 但是反过来说“包含抽象方法的类一定是抽象类”就是正确的。事实上,抽象类可以是一个完全正常实现的类 2..注意:接口中声明的成员变量默认都是 public static final 的,必须显示的初始化。因而在常量声明时可以省略这些修饰符。
* 接口是若干常量和抽象方法的集合,目前看来和抽象类差不多。
1) 接口中只能定义抽象方法,这些方法默认为 public abstract 的,因而在声明方法时可以省略这些修饰符。
3) 接口中没有构造方法,不能被实例化。
4) 一个接口不实现另一个接口,但可以继承多个其他接口。接口的多继承特点弥补了类的单继承。
* 接口必须通过类来实现(implements)它的抽象方法,然后再实例化类。类实现接口的关键字为implements。
* 如果一个类不能实现该接口的所有抽象方法,那么这个类必须被定义为抽象方法。
* 不允许创建接口的实例,但允许定义接口类型的引用变量,该变量指向了实现接口的类的实例。
3...
* 下面说一下抽象类和接口的主要区别。 1) 抽象类可以为部分方法提供实现,避免了在子类中重复实现这些方法,提高了代码的可重用性,这是抽象类的优势;而接口中只能包含抽象方法,不能包含任何实现。
2) 一个类只能继承一个直接的父类(可能是抽象类),但一个类可以实现多个接口,这个就是接口的优势。
综上所述,接口和抽象类各有优缺点,在接口和抽象类的选择上,必须遵守这样一个原则:
行为模型应该总是通过接口而不是抽象类定义,所以通常是优先选用接口,尽量少用抽象类。选择抽象类的时候通常是如下情况:需要定义子类的行为,又要为子类提供通用的功能。 注意: 泛型是 Java 1.5 的新增特性,它以C++模板为参照,本质是参数化类型(Parameterized Type)的应用。类型参数只能用来表示引用类型,不能用来表示基本类型,如 int、double、char 等。但是传递基本类型不会报错,因为它们会自动装箱成对应的包装类。