抽象方法能否同时是native或者static或synchronized的?
这个问题要从实际的逻辑角度去看的,首先要了解abstract,static,synchronized,native这些关键字干什么用的。
- abstract是抽象的,指的是方法只有声明而没有实现,他的实现要放入声明该类的子类中实现。
- static是静态的,是一种属于类而不属于对象的方法或者属性,而我们知道,类其实也是一个对象,他是在class文件加载到虚拟机以后就会产生的对象,通常来说它是单利的,就是整个虚拟机中只有一个这样的类对象(当然,如果用新的类加载器也会生成新的类的对象)。
- synchronized 是同步,是一种相对线程的锁。
- native 本地方法,这种方法和抽象方法及其类似,它也只有方法声明,没有方法实现,但是它与抽象方法不同的是,它把具体实现移交给了本地系统的函数库,而没有通过虚拟机,可以说是java与其它语言通讯的一种机制。
那么我们就来谈谈这些关键字为什么不能和abstract混用。
首先abstract与static,其实一看他们的作用和属性就很容易辨别,abstract是没有实现的,而static一定要有实现,因为abstract的类不能生产对象,但是static是属于类,而类已经是一个存在的对象,这两个关键字在这上面有一个关键的矛盾点。 synchronized 是同步,然而同步是需要有具体操作才能同步的,如果像abstract只有方法声明,那同步一些什么东西就会成为一个问题了,当然抽象方法在被子类继承以后,可以添加同步。 native,这个东西本身就和abstract冲突,他们都是方法的声明,只是一个吧方法实现移交给子类,另一个是移交给本地操作系统。如果同时出现,就相当于即把实现移交给子类,又把实现移交给本地操作系统,那到底谁来实现具体方法呢?
抽象方法能否同时是native或者static或synchronized的?相关推荐
- react native在static中使用this方法
方法一 首先需要在componentDidMount(){}中动态的添加点击事件 属性给params componentDidMount(){this.props.navigation.setPara ...
- Java面试准备(一)——Java基础
Java基础 一.基础概念与常识 1. Java和C++对比 2. Java语言有哪些特点 3. 什么是字节码?采用字节码的好处? 4. JVM,JRE和JDK 5. Oracle JDK和OpenJ ...
- Java基础教程带你走进java的世界
Java教程 Java简介 什么是Java? Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称. Java分为三个体系: Java ...
- Java中的transient关键字
前言 说实话学了一段时间java的朋友对于transient这个关键字依旧很陌生基本没怎么用过,但是transient关键字在java中却起到了不可或缺的地位!如果要说讲到,我觉得最可能出现的地方是I ...
- Java常见知识点汇总
Java常见知识点汇总 基础概念与常识 1.Java 语言有哪些特点? 2.JVM vs JDK vs JRE 3.什么是字节码?采用字节码的好处是什么? 4.为什么不全部使用 AOT 呢? 5.为什 ...
- Java关键字及其作用
一. 关键字总览: 访问控制 private protected public 类,方法和变量修饰符 abstract class extends final implemen ...
- java class 关键字_java关键字及其作用
一. 关键字总览: 访问控制 private protected public 类,方法和变量修饰符 abstract class extends final implements interface ...
- Java语言基本元素
Java语言基本元素 1.标识符 1.1标识符概念 程序员对程序中的元素加以命名时使用的命名记号称为标识符(identifier) 标识符包括:类名.变量名.常量名.方法名 1.2Java标识符命名规 ...
- java关键字有什么用_JAVA中关键字有什么用
展开全部 Java关键e68a84e8a2ad3231313335323631343130323136353331333363356566字及其作用 一. 关键字总览: 访问控制 private pr ...
最新文章
- Python+OpenCV实现AI人脸识别身份认证系统(3)—训练人脸识别模型
- 在FCKeditor 2.6中添加插入视频和音频功能
- HTML(5)+CSS(3)--那些不知道但重要的知识!
- Nmap扫描教程之网络基础服务DHCP服务类
- vue 循环 递归组件_Vue一个案例引发的递归组件的使用
- ACM入门之【差分】
- summary+plan
- 【Python】字典(Dictionary) items()方法
- 如何快速的学习html5,高效快速学习HTML5的技巧
- [转载]使用CPU时间戳进行高精度计时
- 【英语学习】【Level 07】U07 Stories of my Life L5 I shouldn't have said that
- Linux查询命令man手册各章节解释
- 区块链中的密码学(五)-零知识证明简述
- 荣耀play3 鸿蒙,荣耀play系列跳过2直接上3代,999元的配置还能愉快play吗?
- ecshop添加商品选择品牌时如何按拼音排序
- linux红帽认证考试费,红帽rhce认证考试费用是多少?
- docker run 报错 Bind for 0.0.0.0:80 failed: port is already allocated.解决方案
- 这里除了安全,什么都不会发生!Docker镜像P2P加速之路
- 用c语言求积分程序,菜鸟学C语言(五)之求定积分
- python播放url音频_从URL获取音频并播放i