抽象类和接口

抽象类

  • abstract修饰符可以用来修饰方法也可以修饰类,如果修饰方法,那么方法就是抽象方法;如果修饰类,那么该类就是抽象类。
  • 抽象类中可以没有抽象方法,但是有抽象方法的类一定要声明为抽象类。
  • 抽象类,不能使用new关键字来创建对象,它是用来让子类继承的。
  • 抽象方法,只有方法的声明,没有方法的实现(没有方法体),它是用来让子类实现的。
  • 子类继承抽象类,那么就必须要实现抽象类没有实现的抽象方法,否则该子类也要声明为抽象类。
  • 有构造器
  • 抽象类除了包含抽象方法外,还可以包含具体的变量和具体的方法。类即使不包含抽象方法,也可以被声明为抽象类,防止被实例化。
  • 构造函数和静态函数以及final修饰的函数不能使用abstract修饰符。
  • abstract 关键字和哪些关键字不能共存:
  • static
  • private: 抽象类中的私有的抽象方法,不被子类所知,就无法被重写。而抽象方法出现的就是需要被重写。
  • final:被final修饰的类不能有子类。而被abstract修饰的类一定是一个父类。

接口

  • 普通类:只有具体实现
  • 抽象类:具体实现和规范(抽象方法)都有
  • 接口:只有规范
  • 接口就是规范,定义的是一组规则
  • 接口的本质是契约
  • 面对对象的精髓,是对对象的抽象
  • 接口都需要实现类

声明类的关键字是class,声明接口的关键字是interface

java abstract 类 java中abstract类_抽象方法

 

  • 实现了接口的类,必须重写接口中的方法

java abstract 类 java中abstract类_抽象类_02

 

  • 利用接口实现多继承

java abstract 类 java中abstract类_子类_03

 

  • 接口中没有构造方法,不能被实例化
  • 接口中的:常量 public static final;方法 public abstract
  • 接口的作用是约束,定义一些方法,让不同的人实现