abstract
abstract,抽象,可修饰方法和类
- abstract方法:abstract修饰的方法,non-static方法默认runtime bind,等同于c++中virtual方法,abstract方法则等同于c++中纯virtual方法
- abstract类:abstract修饰的类,abstract类不能实例化
abstract方法
- abstract方法不能有实现,只单纯作为接口使用
- abstract方法访问权限不能为private,abstract方法单纯作为接口使用,必须可被外部访问,否则作为接口无意义,因此访问权限不能为private,可为package(可被同package类访问),protected,public
- 子类实现abstract方法(override)时,访问权限必须大于等于父类
- 构造函数不能为abstract方法
- static方法不能为abstract方法
abstract类
- 包含abstract方法类必须为abstract类
- 不含abstract方法类也可指定为abstract类
- abstract类不能实例化,因此abstract方法无实现是安全的,因为编译器确保abstract方法不会被调用,因此不会runtime crash
- 继承自abstract类的子类若没有实现(override)所有abstract方法,子类依旧为abstract类