可以实现吗:如果子类中的某个方法没有调用父类的同名方法,编译时提示出错

z_j 2005-09-03 11:10:13
比如:
class A
{
public void f()
{
System.out.println("A.f");
}
}

class B extends A
{
public void f()
{
System.out.println("B.f");
}
}

B是A的子类,现在需要在B方法f中必须调用A.f , 即如果按上面实现B,需要让编译器提示出错,正确的应该是:
class B extends A
{
public void f()
{
System.out.println("B.f");
super.f();
}
}

即某个方法必须强制让子类调用,不调用,这让编译器提示的错,有没有办法实现这点?




...全文
206 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
lipeipei 2005-09-04
  • 打赏
  • 举报
回复
很不好意思,java语言中没有内建这种机制。
不确定是否能够通过玩弄语言技巧来实现。
humanity 2005-09-04
  • 打赏
  • 举报
回复
的确没有听说 过这种的情况。
我觉得既然你明确要覆盖,难道怎么做你都不清楚。

这个里面有个契约问题,这个是写文档中,并记在开发小组成员的大脑上,编译器估计帮不上忙。

不知道 J2SE5 Meta 能帮上忙么?
shenpipi 2005-09-04
  • 打赏
  • 举报
回复
java语言中没有内建这种机制
----------------------------
这种机制有点可怕,比如某个超类实现了某个方法,这个实现就简单是简单的抛出一个UnSurportedOperationException,现在一个子类继承了这个超类,你要是强迫它必须调用父类的方法,会怎么样,呵呵.
jblz 2005-09-04
  • 打赏
  • 举报
回复
我来up
mandm 2005-09-04
  • 打赏
  • 举报
回复
如果要让子类非要实现某个方法不可,那就用接口吧
coquettishelf 2005-09-03
  • 打赏
  • 举报
回复
肯定不行了
interhanchi 2005-09-03
  • 打赏
  • 举报
回复
不行.你这样做是想干什么?
xtaotao 2005-09-03
  • 打赏
  • 举报
回复
好象不能让编译器去强制子类中覆盖父类方法时,强制调用父类的方法吧!
请高手继续!
shenpipi 2005-09-03
  • 打赏
  • 举报
回复
5.0的编译器好像是自动调用基类的方法吧,不用显式调用,不是很清楚,达人帮忙解惑
-----------------------------------------------------------------
估计不会有什么语言会强迫子类的函数在覆盖超类函数的时候必须调用超类函数的.
wuyupu(wuyupu) 说的不会是构造函数吧?
kingarden 2005-09-03
  • 打赏
  • 举报
回复
覆盖就可以实现了!有必要这么做么?
seeker8519 2005-09-03
  • 打赏
  • 举报
回复
楼主你这样做有什么意义了?
wuyupu 2005-09-03
  • 打赏
  • 举报
回复
5.0的编译器好像是自动调用基类的方法吧,不用显式调用,不是很清楚,达人帮忙解惑
shenpipi 2005-09-03
  • 打赏
  • 举报
回复
那就不是java语言了.
呵呵,这样就能完成了,不过担心你做不了.
1.扩展java文法,增加一个enforced修饰符,该修饰符强制每个覆盖了超类函数的函数必须调用超类的函数.
2.实现自己的编译器
3.再实现自己的虚拟机.(如果2中实现的编译器的目标语言不是bytecode,而是机器码的话,那么这一步可以省略.如果2中实现的编译器的目标语言是bytecode,并且遵循了sun的标准,那么这一步也可以省略)

以上纯属开玩笑,楼主勿信.

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧