黑马程序员技术交流社区

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

作者: 王卿    时间: 2011-7-17 18:37
标题: abstract的method是否可同时是static。。。。?
今天好不容易来了一趟网吧。把这几个问题一并问了!

abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
作者: 匿名    时间: 2011-7-17 22:37
abstract的method 不可以是static的,因为抽象的方法是要被子类实现的,而static与子类扯不上关系!

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

   关于synchronized与abstract合用的问题,个人觉得也不行,我没见到过这种情况,并且synchronized应该是作用在一个具体的方法上才有意义。而且,方法上的synchronized同步所使用的同步锁对象是this,而抽象方法上无法确定this是什么。
作者: 匿名    时间: 2011-7-17 23:02
抽象关键字不可以与一下关键字共存:
final:如果方法被抽象,就需要被覆盖,而final是不可以被覆盖,所以冲突。
        编译提示:非法的修饰符组合:abstract 和 final
private:如果函数被私有了,子类无法直接访问,怎么覆盖呢?
        编译提示:非法的修饰符组合:abstract 和 private
static : 不需要对象,类名既可以调用抽象方法。而调用抽象方法没有意义。
        编译提示:非法的修饰符组合:abstract 和 static

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




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