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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 青菜白汤 中级黑马   /  2013-12-21 15:45  /  2890 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

abstract的method是否可同时是static,是否可同时是synchronized?为什么呢?

5 个回复

倒序浏览
抽象方法不可与static synchronized同时使用
静态方法不能被重写,抽象方法时必须被重写的,当然你可以在子类中写一个与父类一模一样的静态方法 但这不是重写是隐藏,网上有这样一句话 "实例方法被覆盖,静态方法被隐藏" 覆盖与隐藏不是同一个意思。
对于不能和synchronized同时写是因为普通方法被synchronized修饰,锁是他的实例对象 而抽象类不能被实例化

评分

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

查看全部评分

回复 使用道具 举报
梦想是否存在 来自手机 中级黑马 2013-12-21 16:51:18
藤椅
抽象的方法不可以是静态的,因为抽象方法是要被子类实现的。而 synchronized要给具体的方法加锁才有意义,否则判断不了this同步锁

评分

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

查看全部评分

回复 使用道具 举报

都不可以,因为abstract申明的方法是要求子类去实现的,abstract只是告诉你有这样一个接口,你要去实现,至于你的具体实现可以是native和synchronized,也可以不是,抽象方法是不关心这些事的,所以写这两个是没有意义的。然后,static方法是不会被覆盖的,而abstract方法正是要子类去覆盖它,所以也是没有意义的。所以,总的来说,就是java语法不允许你这样做,事实上,也没有意义这样做。

评分

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

查看全部评分

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

评分

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

查看全部评分

回复 使用道具 举报
abstract修饰方法,子类需要重写去实现,主要用于各个子类的实例对象;static修饰方法,则方法不属于某个对象,属于class,可用class名.方法名(),进行调用;简单的说abstract实例对象;而static属于类。所以static方法不能是abstract方法

评分

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

查看全部评分

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