天天看点

抽象方法能不能同时是static / native / synchronized的

  1. 不能是static的,抽象方法需要子类重写,但是static方法不能被子类重写
    1. 所谓静态就是指:在编译之后所分配的内存会一直存在(不会被回收),直到程序退出内存才会释放这个空间
    2. 因为静态方法从程序开始运行后就已经分配了内存,也就是说已经写死了。所有引用到该方法的对象(父类的对象也好子类的对象也好)所指向的都是同一块内存中的数据,也就是该静态方法。子类中如果定义了相同名称的静态方法,并不会重写,而应该是在内存中又分配了一块给子类的静态方法,没有重写这一说
  2. 不能是native的,本地方法是由本地代码(如c代码)实现的方法,抽象方法是没有实现的
  3. 不能是synchronized的,synchronized和方法具体实现细节相关,抽象方法没有方法的实现