黑马程序员技术交流社区

标题: abstract的method是否可同时是static [打印本页]

作者: 青菜白汤    时间: 2013-12-21 15:45
标题: abstract的method是否可同时是static
abstract的method是否可同时是static,是否可同时是synchronized?为什么呢?


作者: 四五六七八    时间: 2013-12-21 16:30
抽象方法不可与static synchronized同时使用
静态方法不能被重写,抽象方法时必须被重写的,当然你可以在子类中写一个与父类一模一样的静态方法 但这不是重写是隐藏,网上有这样一句话 "实例方法被覆盖,静态方法被隐藏" 覆盖与隐藏不是同一个意思。
对于不能和synchronized同时写是因为普通方法被synchronized修饰,锁是他的实例对象 而抽象类不能被实例化

作者: 梦想是否存在    时间: 2013-12-21 16:51
抽象的方法不可以是静态的,因为抽象方法是要被子类实现的。而 synchronized要给具体的方法加锁才有意义,否则判断不了this同步锁
作者: 卖火柴    时间: 2013-12-21 18:22

都不可以,因为abstract申明的方法是要求子类去实现的,abstract只是告诉你有这样一个接口,你要去实现,至于你的具体实现可以是native和synchronized,也可以不是,抽象方法是不关心这些事的,所以写这两个是没有意义的。然后,static方法是不会被覆盖的,而abstract方法正是要子类去覆盖它,所以也是没有意义的。所以,总的来说,就是java语法不允许你这样做,事实上,也没有意义这样做。
作者: 【⑨】№①妮    时间: 2013-12-21 21:17
abstract的method 不可以是static的,因为抽象的方法是要被子类实现的        native方法表示该方法要用另外一种依赖平台的编程语言实现的,不存在着被子类实现的问题,所以,它也不能是抽象的,不能与abstract混用;         关于synchronized与abstract合用的问题,我觉得也不行,因为在我几年的学习和开发中,从来没见到过这种情况,并且我觉得synchronized应该是作用在一个具体的方法上才有意义。而且,方法上的synchronized同步所使用的同步锁对象是this,而抽象方法上无法确定this是什么。
作者: qly2046    时间: 2013-12-23 21:55
abstract修饰方法,子类需要重写去实现,主要用于各个子类的实例对象;static修饰方法,则方法不属于某个对象,属于class,可用class名.方法名(),进行调用;简单的说abstract实例对象;而static属于类。所以static方法不能是abstract方法




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2