Java抽象类与接口

抽象类:

·抽象类就是专门设计用来让子类继承的类,用abstract修饰

·抽象类提供一个类的部分实现,其内部可以有成员变量、构造方法、具体方法和抽象方法。抽象类包含的抽象方法以分号结束,且不含方法体,它是必须被子类覆盖的方法

·格式:

abstract class<类名>{
     成员变量;
     返回类型 方法名(参数列表){方法体}      //定义一般方法
     abstract 返回类型 方法名(参数列表);   //定义抽象方法
}

·注意点:

  (1)抽象类可以只包含抽象方法,也可以拥有普通的成员变量或方法。抽象类的子类必须覆盖父类的所有抽象方法。

  (2)如果一个类不是抽象类,就不能在该类中定义抽象方法(抽象方法只能定义在抽象类中)。

  (3)抽象类可以有构造方法,但抽象类不会有实例,也不能直接用构造方法来生成实例,一般可通过其子类进行实例化。

  (4)抽象方法只定义方法声明,不定义方法实现。

  (5)抽象类中可以定义非抽象方法,也可以不定义抽象方法。

  (6)对于类,不能同时用final和abstract说明;对于成员方法,不能同时用static和abstract说明。

           使用final关键字的类不能被继承;使用static关键字的方法能在不实例化对象时就被使用,而使用abstract关键字的方法              没有方法体,必须要靠子类进行具体实现。

  (7)abstract与final、private、static不共存

·


接口:

·接口是在程序开发的早期建立的一组协议(规范公共的操作接口),它没有被具体实现。通过关键字interface可以指定一个接口必须做什么,而不是规定它如何去做。在接口中定义的方法是不含方法体的,一旦接口被定义,任何类成员都可以实现该接口。

·在Java语言中,一个类只能有一个父类。但Java提供了接口用于实现多重继承,一个类可以有一个父类,并能实现多个接口。接口是一个特殊的类:由常量和抽象方法组成

·格式:

[public] interface 接口名 [extends父接口名列表]{
     数据类型 变量名=常量值;                                   //常量域声明
     返回类型 方法名(参数列表)[throw异常列表];                  //抽象方法声明
}

·注意点:

  (1)接口具有继承性,一个接口还可以继承多个父接口,父接口间用逗号分隔;

  (2)系统默认接口中所有成员变量的修饰都是加上public、static和final。

double PI=3.1415926;
完全等同于:
public static final double PI=3.1415926;

  (3)系统默认接口中所有成员方法的修饰都是public和abstract。

void testA();
完全等同于:
public abstract void testA();

  (4)接口中只包含常量定义和抽象方法

  (5)接口本身具有抽象属性,因此不需要使用abstract关键字,接口的访问控制权限有public和默认权限,不具有protected和private权限

  (6)接口不含构造方法

·


小结:

·抽象类是对根源的抽象;接口是对动作的抽象。

·不定义任何变量并无须给出任何方法的完整定义,考虑接口;

  必须有具体的方法定义或变量时,考虑抽象类。

·

猜你喜欢

转载自blog.csdn.net/u014754189/article/details/80089136