本帖最后由 student 于 2013-5-27 20:53 编辑
抽象类和接口之间,存在许多相识之初,所以这里将两者放到一起分析。
一、抽象类
1. 抽象类就是由关键字abstract定义的类。
2. 不可用创建抽象类的对象,只能创建其非抽象的子类对象。
3. 抽象类中可以定义抽象方法,也可以定义非抽象方法,抽象方法一定定义在抽象类中。
4. 继承抽象类的类,是该抽象类的子类,子类必须覆盖抽象类的所有抽象方法。如果子类只覆盖部分抽象方法,那么该子类还是抽象类。
例子:- //抽象类
- abstract class Animal {
- //抽象方法:只定义方法,没有方法体
- abstract public void method1();
-
- //非抽象方法
- public void method2() {
- System.out.println("抽象方法");
- }
- }
- //子类:继承抽象类Animal
- class Dog extends Animal {
- //子类必须覆盖抽象方法
- public void method1() {
- System.out.println("子类覆盖父类抽象方法");
- }
- }
复制代码 二、接口
1. 接口是由关键字interface定义的类,接口可以理解为一个特殊的抽象类。
2. 接口中的成员(成员方法和成员变量)都必须是public的,接口的方法可以是抽象的,也可以是非抽象的。
3. 接口不能创建对象,因为只有抽象方法。
4. 接口需要给子类实现,子类通过关键字implements来实现接口。
5. 子类必须覆盖接口中的所有抽象方法和非抽象方法。
例子:- //接口
- interface Machine {
- //抽象方法,只有方法声明,没有方法体
- abstract public void method1();
- //非抽象方法,只有方法说明,没有方法体
- public void method2();
- }
- //实现接口
- class Car implements Machine {
- //实现接口的抽象方法
- public void method1() {
- System.out.println("method1");
- }
- //实现接口的非抽象方法
- public void method2() {
- System.out.println("method2");
- }
-
- }
复制代码 当抽象类中的方法都是抽象方法时,该抽象类可以定义为接口。
|