有些类创建爱你对象没有意义,我们把这个定义为抽象类
使用abstract修饰类变成抽象类
抽象类不能被实例化只能被继承
抽象类的构造方法不能直接使用只能被紫烈调用
抽象方法没有方法体,需要使用分号表示声明结束
有抽象方法的类一定是抽象类,抽象类可以没有抽象方法
子类必须重写父类的方法除非子类也是抽象类
抽象类有构造方法,但是不能创建对象
final修饰的方法可以被继承,不能被重写
abstract修饰的方法必须被重写
final修饰的类不能被继承,abstract修饰的类必须必继承
final类中不能有abstract方法,abstract类中可以有final方法
接口
接口表示一个一种约束或者能力
对外接口一一致接口实现了多继承降低了代码之间的耦合
接口不能创建对象,没有构造方法,一般是抽象方法
接口中的所有属性都是静态常量属性public staticfinal
接口中的方法没有声明时默认时publicstaticfinal
接口和类时平级关系
接口和类的关系
类实现接口
如果一个类继承的父类也实现接口,声明类时,必须先继承再实现
普通接口:在接口中可以声明抽象方法,和静态常量,
常量群接口:在接口中只声明一组静态常量属性
标志性接口:在接口中没有抽象方法,没有静态常量,作用为了标记某个类具有的功能
接口与接口的关系
继承关系,使用extends实现接口与接口的继承关系
父类接口中的所有成员都会被子接口继承子接口不需要实现任何功能
接口可以多继承
jdk1.8之后接口中使用static关键字修饰的方法有方法体,静态方法需要方法体,使用default关键字修饰的方法有方法体
接口和抽象类的区别
接口interface抽象类abstract
抽象类中有没有抽象方法都可以
接口能包含抽象方法和静态常量
抽象类和几口都不能被实现
抽象类有构造方法,接口没有构造方法
抽象类一般用来表示同类事物,接口可以表示不同类的事物
抽象类可以实现代码重用,可以约束子类功能,接口就是约束实现类的功能降低代码之间的耦合
程序或模块内部使用抽象类
程序架构或模块间用接口
类实现对象没有意义,用抽象类
抽象类不能被实例化