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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王卿 黑马帝   /  2011-7-17 18:37  /  3924 人查看  /  2 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

今天好不容易来了一趟网吧。把这几个问题一并问了!

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

评分

参与人数 1技术分 +1 收起 理由
admin + 1 来网吧发帖学习,值得鼓励,加分!

查看全部评分

2 个回复

倒序浏览
黑马网友  发表于 2011-7-17 22:37:34
沙发
abstract的method 不可以是static的,因为抽象的方法是要被子类实现的,而static与子类扯不上关系!

  native方法表示该方法要用另外一种依赖平台的编程语言实现的,不存在着被子类实现的问题,所以,它也不能是抽象的,不能与abstract混用。java中对应的方法不需要写具体的代码,但需要在前面声明native。

   关于synchronized与abstract合用的问题,个人觉得也不行,我没见到过这种情况,并且synchronized应该是作用在一个具体的方法上才有意义。而且,方法上的synchronized同步所使用的同步锁对象是this,而抽象方法上无法确定this是什么。

评分

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

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-17 23:02:49
藤椅
抽象关键字不可以与一下关键字共存:
final:如果方法被抽象,就需要被覆盖,而final是不可以被覆盖,所以冲突。
        编译提示:非法的修饰符组合:abstract 和 final
private:如果函数被私有了,子类无法直接访问,怎么覆盖呢?
        编译提示:非法的修饰符组合:abstract 和 private
static : 不需要对象,类名既可以调用抽象方法。而调用抽象方法没有意义。
        编译提示:非法的修饰符组合:abstract 和 static

synchronized,个人认为也不可以,synchronzied是用来定义同步函数的,表示该函数中的代码需要被同步,如果这个函数是抽象的,根本就没有可以执行的代码,那又何来同步一说??
native也不能和abstract混用,原因类似synchronized,native修饰的函数也是要求有函数体,即可以执行的代码,否则这个函数就没有存在的意义,而abstract修饰的是抽象方法,没有可执行的函数体。

评分

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

查看全部评分

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