黑马程序员技术交流社区
标题:
求解抽象方法的问题
[打印本页]
作者:
qiucheng1990
时间:
2012-11-28 07:52
标题:
求解抽象方法的问题
求解为什么抽象方法不能用static和private修饰呢,求详解
作者:
陈龙
时间:
2012-11-28 08:26
1.为什么不能用static修饰
因为abstract的语义就是说这个方法是多态方法,需要在子类中实现。而static方法则是在本类中实现的,编译期绑定,不具有多态行为。
2为什么不能用private修饰
因为抽象方法必须被子类覆写,如果使用了private,则子类是无法覆写的
作者:
qianfancy
时间:
2012-11-28 09:15
java中抽象类的方法可以不能用static来修饰,自由抽象类的属性可以。接口中的方法也不行,接口只是抽象类的一个特殊的。
抽象类中的抽象方法(其前有abstract修饰)不能用private、static、synchronized、native访问修饰符修饰。原因如下:抽象方法没有方法体,是用来被继承的,所以不能用private修饰;static修饰的方法可以通过类名来访问该方法(即该方法的方法体),抽象方法用static修饰没有意义;使用synchronized关键字是为该方法加一个锁。。而如果该关键字修饰的方法是static方法。则使用的锁就是class变量的锁。如果是修饰类方法。则用this变量锁。但是抽象类不能实例化对象,因为该方法不是在该抽象类中实现的。是在其子类实现的。所以。锁应该归其子类所有。所以。抽象方法也就不能用synchronized关键字修饰了;native,这个东西本身就和abstract冲突,他们都是方法的声明,只是一个吧方法实现移交给子类,另一个是移交给本地操作系统。如果同时出现,就相当于即把实现移交给子类,又把实现移交给本地操作系统,那到底谁来实现具体方法呢?
作者:
ljhheima
时间:
2012-11-28 12:40
陈龙 发表于 2012-11-28 08:26
1.为什么不能用static修饰
因为abstract的语义就是说这个方法是多态方法,需要在子类中实现。而static方 ...
我不解的是为什么楼主会想到用private去修饰子类要重写的方法
作者:
邱峁
时间:
2012-11-28 16:22
你可以这样理解为什么抽象方法不能用static和private修饰
首先,你要明确什么是抽象方法,
抽象方法用大白话就是你想象的一个种类事物的大体轮廓。
其次,你要知道static和private是什么
static是静态的,private是私有的,
一个种类事物都有相同点和不同点,抽象方法是这个事物的相同点,而private、static是修饰不同点的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2