黑马程序员技术交流社区
标题:
abstract的method
[打印本页]
作者:
伊廷文
时间:
2013-4-19 19:09
标题:
abstract的method
abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
作者:
陈宇鹏
时间:
2013-4-19 21:27
都不可以,因为abstract申明的方法是要求子类去实现的,abstract只是告诉你有这样一个接口,你要去实现,至于你的具体实现可以是native和synchronized,也可以不是,抽象方法是不关心这些事的,所以写这两个是没有意义的。然后,static方法是不会被覆盖的,而abstract方法正是要子类去覆盖它,所以也是没有意义的。所以,总的来说,就是java语法不允许你这样做,事实上,也没有意义这样做。
作者:
风乐
时间:
2013-4-19 23:24
我现在的水平只知道abstract修饰的抽象方法不能用static修饰,因为被static修饰的方法可以直接通过类名调用,但abstract修饰的方法不被复写是没有实际方法体的。
作者:
先小涛
时间:
2013-4-20 10:19
本帖最后由 先小涛 于 2013-4-20 10:24 编辑
抽象类中的抽象方法只是定义功能,比如人要吃饭,但是不同的人吃饭的方式不同,所以事先无法具体实现功能。那么这时可以只定义方法,让具体的子类去实现。比如婴儿需要喂着吃
abstract class Person{
public abstract void chiFan();//只是定义功能,具体由子类实现
}
class Baby extends Person{
public void chiFan(){
System.out.println("喂着吃");
}
}
复制代码
而java语法规定被static修饰的方法是不能被继承的,而抽象方法必须要求子类实现的,由此可见static与abstract是矛盾的,故不能同时修饰方法。
还有static意思是静态的,而非动态的,随着类走的,相当于类的成员变量,类的属性共性,不是随意变化的。
而非静态方法是随着对象走的,可变化的,多态的。
作者:
黄玉昆
时间:
2013-4-20 21:47
如果问题未解决,请继续追问,如果问题解决了,请将问题分类改为“已解决”,谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2