abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
Posted 我是陌生人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?相关的知识,希望对你有一定的参考价值。
1、abstract是抽象的,指的是方法只有声明而没有实现,他的实现要放入声明该类的子类中实现。
2、static是静态的,是一种属于类而不属于对象的方法或者属性
3、synchronized 是同步,是一种相对线程的锁。
4、native 本地方法,这种方法和抽象方法及其类似,它也只有方法声明,没有方法实现,但是它与抽象方法不同的是,它把具体实现移交给了本地系统的函数库,而没有通过虚拟机,可以说是Java与其它语言通讯的一种机制。
5、那么我们就来谈谈这些关键字为什么不能和abstract混用。
首先abstract与static,声明static说明可以直接用类名调用该方法;
声明abstract说明需要子类重写该方法;
如果同时声明static和abstract,用类名调用一个抽象方法肯定不行。
synchronized 是同步,然而同步是需要有具体操作才能同步的,如果像abstract只有方法声明,那同步一些什么东西就会成为一个问题了,当然抽象方法在被子类继承以后,可以添加同步。
native,这个东西本身就和abstract冲突,他们都是方法的声明,只是一个吧方法实现移交给子类,另一个是移交给本地操作系统。如果同时出现,就相当于即把实现移交给子类,又把实现移交给本地操作系统,那到底谁来实现具体方法呢!
不能放在一起的修饰符:final和abstract,private和abstract,static和abstract,因为abstract修饰的方法是必须在其子类中
实现(覆盖),才能以多态方式调用,以上修饰符在修饰方法时期子类都覆盖不了这个方法,final是不可以覆盖,private是不能
够继承到子类,所以也就不能覆盖,static是可以覆盖的,但是在调用时会调用编译时类型的方法,因为调用的是父类的方法,
而父类的方法又是抽象的方法,又不能够调用,所以上的修饰符不能放在一起。
以上是关于abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?的主要内容,如果未能解决你的问题,请参考以下文章
Java面试题10 abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
abstract的方法是否可同时是static,是否可同时是native,是否可同时是synchronized?