Abstract:
abstract修饰类后,该类为抽象类,不能被实例化,必需进行扩展。
修饰方法后,该方法为抽象方法必须被子类重写(override)
- abstract 只能修饰类和方法,不能修饰属性,abstract是为了抽象化,将类的属性抽象化没有实际的意义
下面是一些修饰词,不能和其并存
- final:final 的目的是防止属性和方法被修改,不能被继承,但是抽象方法就是用来被继承的
- private:abstract 是为了用来让子类继承的,子类不能继承父类 private 方法
- native:本地的,本身与abstract就冲突,native是把方法实现交给本地操作系统,而 abstract 是将实现交给子类重写的方法,他们都是方法的声明。
- synchronize:一种线程锁,需要具体操作才能进行同步,但是 abstract 修饰的方法没有方法体,也就没有具体的实现操作
- 接口里的方法是不能有方法身体的,但抽象类的方法是可以有方法体的,继承后,在这一点上就会产生矛盾.
Static:
static--修饰内部类说明该内部类属于外部类而不属于外部类的某个实例。
修饰字段说明该字段属于类而不属于类实例。
修饰方法说明该方法属于类而不属于类实例。
访问修饰词 | 当前类 | 子类 | 本包中的类 | 其他包中的类 |
public | √ | √ | √ | √ |
protected | √ | √ | √ | x |
default | √ | √ | x | x |
private | √ | x | x | x |