Java中抽象类和接口

一,抽象类

  1. 抽象方法用abstract修饰
  2. 抽象方法没有任何执行语句
  3. 因为无法执行抽象方法,抽象方法的类也必须申明为抽象类
  4. 无法实例化一个抽象类,可以实例化其非抽象子类
  5. 抽象类用于被继承
  6. 抽象类可以强迫子类实现其定义的抽象方法,抽象方法相当于定义了规范
  7. 抽象类中可以有非抽象方法
  8. 抽象类中的成员可以是 private、默认、protected、public
  9. 抽象类中可以定义构造器

二,接口

  接口定义:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。

  为什么使用接口:

  1. 减少代码的书写(上边分析的代码重载) 
       2. 提高了代码的可维护性和扩展性。 
       3. 在团队合作中,代码的规范性

  如果一个抽象类没有字段,所有方法全部都是抽象方法,就可以把该抽象类改为接口。

  注意事项:

  1. 接口定义的方法默认是public abstract(可以在定义时不写)
  2. interface可以继承自另一个interface,继承时使用extends
  3. 接口可以定义default方法(JDK1.8后特型)
  4. 接口中定义的成员变量实际上都是常量
  5. 接口中不能有静态方法

三,抽象方法

抽象方法不能被标记为static, native, synchronized。

抽象方法需要子类重写,而静态的方法是无法被重写的,因此二者是矛盾的。本地方法是由本地代码(如 C 代码)实现的方法,而抽象方法是没有实现的,也是矛盾的。synchronized 和方法的实现细节有关,抽象方法不涉及实现细节,因此也是相互矛盾的。

 

四,面试题

问题:接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concreteclass)?抽象类中是否可以有静态的main方法?

答案:都是可以的

posted @ 2019-08-08 10:49  Noperx  阅读(151)  评论(0编辑  收藏  举报