`

<转>抽象方法能否同时是native或者static或synchronized

阅读更多
这个问题要从实际的逻辑角度去看的,首先要了解abstract,static,synchronized,native这些关键字干什么用的。

abstract是抽象的,指的是方法只有声明而没有实现,他的实现要放入声明该类的子类中实现。
static是静态的,是一种属于类而不属于对象的方法或者属性,而我们知道,类其实也是一个对象,他是在class文件加载到虚拟机以后就会产生的对象,通常来说它是单例的,就是整个虚拟机中只有一个这样的类对象(当然,如果用新的类加载器也会生成新的类的对象)。
synchronized 是同步,是一种相对线程的锁。
native 本地方法,这种方法和抽象方法及其类似,它也只有方法声明,没有方法实现,但是它与抽象方法不同的是,它把具体实现移交给了本地系统的函数库,而没有通过虚拟机,可以说是java与其它语言通讯的一种机制。
那么我们就来谈谈这些关键字为什么不能和abstract混用。

首先abstract与static,其实一看他们的作用和属性就很容易辨别,abstract是没有实现的,而static一定要有实现,因为abstract的类不能生产对象,但是static是属于类,而类已经是一个存在的对象,这两个关键字在这上面有一个关键的矛盾点。 synchronized 是同步,然而同步是需要有具体操作才能同步的,如果像abstract只有方法声明,那同步一些什么东西就会成为一个问题了,当然抽象方法在被子类继承以后,可以添加同步。 native,这个东西本身就和abstract冲突,他们都是方法的声明,只是一个吧方法实现移交给子类,另一个是移交给本地操作系统。如果同时出现,就相当于即把实现移交给子类,又把实现移交给本地操作系统,那到底谁来实现具体方法呢?
分享到:
评论

相关推荐

    JAVA开发与应用抽象类与接口及多态PPT教案学习.pptx

    在接口中声明方法时,不能使用native、static、final、synchronized、private等修饰符。和public类一样,public接口也必须定义在与接口同名的文件中。接口中可以有数据成员,这些成员默认都是public static final的...

    java 关键字大全

    值得注意的是,`abstract`不能与`final`、`static`或`private`修饰符同时使用,因为这些修饰符与抽象的性质相冲突。 #### 2. boolean `boolean`类型用于存储逻辑值,只接受`true`和`false`两个值。在条件判断和...

    JAVA面试题甲骨文

    答:abstract 方法不能是 static 的,也不能是 native 的或 synchronized 的。 20. 什么是内部类?Static Nested Class 和 Inner Class 的区别? 答:内部类是定义在另一个类中的类,Static Nested Class 是静态...

    Java面试题超级全.zip

    抽象的(abstract)方法是否可同时是静态的(static), 是否可同时是本地方法(native),是否可同时被 synchronized? ``` 都不能。 1.抽象方法需要子类重写,而静态的方法是无法被重写的,因此二者是矛盾的。 2.本地...

    java面试笔试题经典版

    **关键字特性**:abstract方法不能是static、native或synchronized,因为它们的含义和抽象方法相冲突。构造器不能被重写,但可以被重载。 **对象传递**:当对象作为参数传递给方法时,传递的是对象的引用,而非对象...

    java程序员面试宝典

    11. 抽象的(abstract)方法可以同时是静态的(static),但不能同时是本地方法(native),因为抽象方法不能被实例化,而静态方法可以被实例化。抽象方法也不能被synchronized,因为抽象方法不能被实例化。

    net学习笔记及其他代码应用

    不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。 接口(interface)...

    Java编程中常用修饰词使用方法

    介绍:strictfp 修饰的类中所有的方法都隐藏了 strictfp 修饰词,方法执行的所有浮点计算遵守 IEEE 754 标准,所有取值包括中间的结果都必须表示为 float 或 double 类型,而不能利用由本地平台浮点格式或硬件提供的...

    java工程师面试题

    - 抽象方法不能是`static`的,因为静态方法属于类,而抽象方法属于接口或抽象类,它们不涉及实例化。 - 抽象方法也不能是`native`的,因为`native`方法代表的是Java与本地代码(如C/C++)的交互,而抽象方法没有...

    JAVA访问修饰符大归纳

    + 抽象类中的抽象方法不能被定义成 private。 + 如果子类只需实现父类中的部分抽象方法,那么此时这个子类也只定义成抽象类。 + 如果子类还是抽象方法时,那么这个子类的子类必须实现所有的抽象方法(包括它爷爷...

    韦尔德软件有限公司.doc

    11. **抽象方法与修饰符**:抽象方法(`abstract`)不能同时是`static`(静态)、`native`(原生方法)或`synchronized`(同步)。`static`方法不能被覆盖,而抽象方法是要被子类覆盖的,`native`和`synchronized`与...

    java面试宝典

    24. abstract方法不可以同时是static、native或synchronized。 25. 内部类可以是static的也可以是非static的。StaticNestedClass不需要外部类实例就能被访问,而InnerClass依赖于外部类的实例。 26. 内部类可以...

    java笔试题java笔试题java笔试题

    - 抽象方法(abstract method)不能是 static,因为 static 方法属于类,而抽象方法属于接口或抽象类,这两者不能结合。 - 抽象方法也不能是 native,因为 native 方法需要在其他代码(如C/C++)中实现,而抽象方法...

    Java面试题含答案.doc

    答案:抽象方法不能是静态或native的,不能是同步的。 二十六、内部类 26. 什么是内部类?Static Nested Class 和 Inner Class 的不同。 答案:内部类是定义在类中的类,Static Nested Class 是静态内部类,...

    java-打印.docx

    * 声明格式:[public | protected | private] [static][ final][abstract] [native] [synchronized]返回类型 方法名([参数列表]) [throws exceptionList]{方法体} * 格式说明: + 方法修饰符:public、protected、...

    JAVA面试宝典

    5. abstract方法不能同时是static、native或synchronized,因为这些关键字与抽象方法的定义相冲突。 6. 内部类可以引用外部类的成员变量和方法。StaticNestedClass是静态内部类,与外部类的实例没有依赖关系;而...

    CoreJava_面试题

    23. abstract方法不能同时是static、native或synchronized,因为这些修饰符与抽象方法的含义不符。 24. 内部类是定义在另一个类中的类,它可以直接访问外部类的成员。Static Nested Class是内部类的一种,它可以...

    JAVA面试宝典2013

    - abstract方法不能同时为static、native或synchronized。 - 内部类可以访问外部类的成员,而Static Nested Class更像是外部类的静态成员。 - 内部类可以引用外部类的成员,但不能有static成员。 - 匿名内部类...

    Java访问修饰符

    抽象类中可以定义抽象方法,抽象方法是不能被实现的方法。 static 访问修饰符 static 访问修饰符表示静态变量或静态方法。静态变量和静态方法可以被类的所有实例共享,不需要创建类的实例就可以访问。 transient ...

    Java面试宝典 Java面试宝典

    答:abstract的method不能同时是static、native或synchronized。 Java内部类 24. 什么是内部类?Static Nested Class和Inner Class的不同。 答:内部类是定义在另一个类中的类,Static Nested Class是静态内部类,...

Global site tag (gtag.js) - Google Analytics