抽象类

包含抽象方法的类,就是抽象类,所谓抽象方法,就是只声明而为实现的方法。

抽象类的规则如下:

  • 抽象类和抽象方法都必须使用abstract关键字修饰
  • 抽象类不能直接实例化,也就是不能直接使用new关键字去产生对象
  • 在抽象类中,定义时抽象方法只需声明,而无需实现
  • 含有抽象方法的类必须被声明为抽象类,抽象类的子类必须实现所有的抽象方法后,才能不叫抽象类,从而被实例化,否则这个子类环视个抽象类

抽象类也可以拥有构造方法,但是这些构造方法必须在子类中被调用,并且子类实例化对象的时候依然满足类继承的关系,先默认调用父类的构造方法,然后调用子类的构造方法,毕竟抽象类之中环视存在属性的,但是抽象类的构造方法无法被外部类实例化对象调用。

抽象类不能用final修饰,因为final修饰的类不能有子类,而抽象类使用的时候必须有子类。

接口

在Java中,提供了一种机制,把对数据的通用操作汇聚在一起,形成一个接口,已形成对算法的复用,所谓算法,就是一系列相关操作指令的集合。

接口,是Java所提供的另一种重要技术,它可视为一种特殊的类,其结构和抽象类非常相似,是抽象类的一种变体。

Java8中,接口内部允许包括数据成员,但是这些数据必须是常量,一旦初始化,不能更改,这些数据成员通常为全局变量。在接口中定义一个变量时,系统会自动把public static final这三个关键字添加在变量前面。

接口的使用原则

  • 接口必须有子类,子类依靠implements关键字可以同时实现多个接口。
  • 接口的子类(如果不是抽象类)必须实现接口之中的全部抽象方法,才能实例化对象。
  • 利用子类实现对象的实例化,接口可以实现多态性。
  • 在接口定义格式中,声明抽象方法的关键字adstract是可以省略的。
  • 接口中的方法必须是抽象方法default方法