请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

java知识分享-我的java记事本

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 791|回复: 0

abstract的method是否可同时是static,是否可同时是native,是否...

[复制链接]

131

主题

132

帖子

573

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
573
发表于 2015-3-15 23:00:09 | 显示全部楼层 |阅读模式
abstractmethod是否可同时是static,是否可同时是native,是否可同时是synchronized?

abstractmethod不可以是static的,因为抽象的方法是要被子类实现的,static与子类扯不上关系!
native方法表示该方法要用另外一种依赖平台的编程语言实现的,不存在着被子类实现的问题,所以,它也不能是抽象的,不能与abstract混用。例如,FileOutputSteam类要硬件打交道,底层的实现用的是操作系统相关的api实现,例如,在windowsc语言实现的,所以,查看jdk的源代码,可以发现FileOutputStreamopen方法的定义如下:
private native void open(Stringname) throws FileNotFoundException;
如果我们要用java调用别人写的c语言函数,我们是无法直接调用的,我们需要按照java的要求写一个c语言的函数,又我们的这个c语言函数去调用别人的c语言函数。由于我们的c语言函数是按java的要求来写的,我们这个c语言函数就可以与java对接上,java那边的对接方式就是定义出与我们这个c函数相对应的方法,java中对应的方法不需要写具体的代码,但需要在前面声明native
关于synchronizedabstract合用的问题,我觉得也不行,因为在我几年的学习和开发中,从来没见到过这种情况,并且我觉得synchronized应该是作用在一个具体的方法上才有意义。而且,方法上的synchronized同步所使用的同步锁对象是this,而抽象方法上无法确定this是什么。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|java知识分享 ( 闽ICP备14003021号-4   

GMT+8, 2019-3-26 04:58 , Processed in 0.071885 second(s), 30 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表
束丝机    单机除尘器    深圳seo    日照网站建设    海参    股票配资    抖音刷赞    梦幻西游私服    艺网卡盟    yy4480    粉丝福利购    声雨竹官方旗舰店    小可爱直播app下载    蓝冠注册    深圳自考网    创业者论坛    幸运赛车    新辉煌寿宁红石材厂