A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 唐溪永 黑马帝   /  2012-2-28 10:43  /  2358 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?

4 个回复

倒序浏览
都不能用,很好理解的,static 使类不用实例化就可以直接由类调用,我们都知道abstract 是只有方法没有实现的细节的。所以static不能用在abstract。
2.synchronized 是线程锁用来实现将这个方法实现的细节同步。但是abstract没有方法实现如何同步,所以不能用
3.native 与abstract 很类似,都是只有方法,没有实现细节。只是一个是交给本地系统。一个是交给子类来实现。如果用abstract native method 那个这个方法是由子类实现呢还是本地系统实现呢? 样不就冲突了吗?

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
不能用,因为static表示是静态的,无需对象就可以调用,而抽象类必须有子类才能用,所以不能用static。native和synchronized也是同样的道理!

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
都不能, abstract需要重载,static为类方法,没有重载一说。

    abstract为没有实现的方法,native为本机实现的方法,自相矛盾。

    abstract方法没有实现,也不可能实际调用抽象方法,没有必要synchronized修饰,当然子类可以根据需要同步该方法。
回复 使用道具 举报
abstract的method 不可以是static的,因为抽象的方法是要被子类实现的        native方法表示该方法要用另外一种依赖平台的编程语言实现的,不存在着被子类实现的问题,所以,它也不能是抽象的,不能与abstract混用;
关于synchronized与abstract合用的问题,我觉得也不行,因为在我几年的学习和开发中,从来没见到过这种情况,并且我觉得synchronized应该是作用在一个具体的方法上才有意义。而且,方法上的synchronized同步所使用的同步锁对象是this,而抽象方法上无法确定this是什么。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马