• 【Java面试题】10 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是可以覆盖的,但是在调用时会调用编译时类型的方法,因为调用的是父类的方法,

    而父类的方法又是抽象的方法,又不能够调用,所以上的修饰符不能放在一起。

  • 相关阅读:
    Educational Codeforces Round 78 (Rated for Div. 2)
    Codeforces Round #606 (Div. 2, based on Technocup 2020 Elimination Round 4)
    Codeforces Round #604 (Div. 2)
    Codeforces Round #603 (Div. 2)
    Educational Codeforces Round 77 (Rated for Div. 2)
    一个逆向的问题
    cppcheck,今天下载了这个软件,准备研究学习一下了
    SQL 显错注入的基本步骤
    OD打印保存执行的汇编指令的脚本
    没事还是不要算卦得好
  • 原文地址:https://www.cnblogs.com/guweiwei/p/6600364.html
Copyright © 2020-2023  润新知