final定义的方法是不是不允许子类重载的
问题点数:20、回复次数:9Top
1 楼snmmc(飞行的鸟)回复于 2001-11-22 11:44:18 得分 10
JAVA允许你扩展一个类<超类>派生另一个类<子类>,当子类扩展父类时,该子类可以超越其父类的方法,在有些情况下,你可能想阻止子类超越一个指定的方法,当你把一个类方法申明为final时,另一个类就不能超越这个方法。为了把方法申明成final方法,只需在该方法头前加final 关键字即可。Top
2 楼snmmc(飞行的鸟)回复于 2001-11-22 11:45:24 得分 0
是的,ok! 愿共同探讨!Top
3 楼javanew(我是java新手)回复于 2001-11-22 11:51:21 得分 0
你是翻译过来的吗?给个网址好不好Top
4 楼zosatapo(CSDN是Litter)回复于 2001-11-22 12:43:55 得分 6
补充一点,这个问题还是要涉及到namespace(叫scope更加确切一点)的问题。我现在举一个例子:
class base{
private final void disp(){}
}
class dervied extends base{
private final void disp(){}
}
这个例子中,这样写就没有任何问题的。这个例子如何解释呢:
(1)variable and method都是有生存空间的,同时也存在在子空间可见不可见的问题。
(比如这里的base和dervied)
(2)要是在同一生存空间不可见的话,前面所说不能超越的说法就不成立的。
比如我举的这个例子。
(3)因为base的 disp()在dervied中是不可见的。
Top
5 楼javanew(我是java新手)回复于 2001-11-22 13:05:39 得分 0
就因为disp是私有的是吗?Top
6 楼snmmc(飞行的鸟)回复于 2001-11-22 13:07:35 得分 0
我查的资料,这属于概念的问题,找两本JAVA基础的书上都会有讲到Top
7 楼snmmc(飞行的鸟)回复于 2001-11-22 13:09:19 得分 0
简单问题不要复杂化Top
8 楼Jacky1206(胖胖,其实我不胖)回复于 2001-11-22 13:37:21 得分 2
是的,被声明为final的方法是不允许被覆盖,即被子类或其他覆盖(overlaod)Top
9 楼Schuman()回复于 2001-11-22 14:24:37 得分 2
private 的根本没有覆盖的问题Top




