面向对象的特性:抽象,封装,继承,多态。其中封装、继承、多态是java的三大基本特性。
抽象
抽象类:包含抽象方法的类称之为抽象类,但不意味着抽象类中只能有抽象方法,它和普通类一样,可以拥有普通的成员变量、方法。
- 抽象类不能被实例化。抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类
- 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类
- 抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能
- 构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法
- 被定义为abstract的类需要被子类继承,但是被修饰为final的类是不能被继承和改写的,这两者是不能一起用来做修饰的。
接口:接口是一种特殊的抽象类。接口中的方法都是抽象方法,abstract默认不写,所以抽象类中的抽象方法不能用访问修饰符。接口中声明的成员默认为static final成员(不管是基础数据类型还是引用类型),且必须初始化。接口的特性:
- 接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)
- 接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用