抽象类和接口
抽象类
- abstract修饰符可以用来修饰方法也可以修饰类,如果修饰方法,那么方法就是抽象方法;如果修饰类,那么该类就是抽象类。
- 抽象类中可以没有抽象方法,但是有抽象方法的类一定要声明为抽象类。
- 抽象类,不能使用new关键字来创建对象,它是用来让子类继承的。
- 抽象方法,只有方法的声明,没有方法的实现(没有方法体),它是用来让子类实现的。
- 子类继承抽象类,那么就必须要实现抽象类没有实现的抽象方法,否则该子类也要声明为抽象类。
- 有构造器
- 抽象类除了包含抽象方法外,还可以包含具体的变量和具体的方法。类即使不包含抽象方法,也可以被声明为抽象类,防止被实例化。
- 构造函数和静态函数以及final修饰的函数不能使用abstract修饰符。
- abstract 关键字和哪些关键字不能共存:
- static
- private: 抽象类中的私有的抽象方法,不被子类所知,就无法被重写。而抽象方法出现的就是需要被重写。
- final:被final修饰的类不能有子类。而被abstract修饰的类一定是一个父类。
接口
- 普通类:只有具体实现
- 抽象类:具体实现和规范(抽象方法)都有
- 接口:只有规范
- 接口就是规范,定义的是一组规则
- 接口的本质是契约
- 面对对象的精髓,是对对象的抽象
- 接口都需要实现类
声明类的关键字是class,声明接口的关键字是interface
- 实现了接口的类,必须重写接口中的方法
- 利用接口实现多继承
- 接口中没有构造方法,不能被实例化
- 接口中的:常量 public static final;方法 public abstract
- 接口的作用是约束,定义一些方法,让不同的人实现