假设我在Java中有3个类,其中超级类有一个名为func()的函数,我现在创建了一个覆盖它的子类,以及我的子类的一个子类,现在正在处理我的子子类,我将如何调用子类和超类的“func()”?
我尝试强制转换'this‘“指针”,但Java在运行时“修复”了它,并调用subsub func()。
编辑:谢谢大家;“斯基恩又重新开始了”。
发布于 2011-01-19 01:11:44
您能做的最好的事情就是在您的子类中调用super.func(),并让您的子类中的func()实现也调用super.func()。
然而,问问你自己,如果我不仅需要我的父母实现的知识,也需要我的祖父母实现的知识,我是否有设计问题?坦率地说,这是在触动我“冰箱里有东西发臭”的本能。你需要重新评估你为什么要这样做。
发布于 2011-01-19 01:08:55
这在Java中是不可能的。顺便说一句。Java中没有任何指针。
发布于 2011-01-19 01:20:51
我会跳上“这个设计中的某些东西闻起来很奇怪”的火车。通常,您会重写一个方法,以便它对特定的子类正常工作。如果您的父类中有跨多个子类共享的代码,那么也许可以将这些代码移动到一个非重写的方法中,以便所有的子类/granchildren/等都可以轻松地访问它。
你能不能翻开你的设计,使用更多的模板方法?(http://en.wikipedia.org/wiki/Template_method_pattern)
模板方法背后的概念是,您的父类中有一些算法,您可以通过对子类的多态调用来填充需要特定于类的部分。你的问题中没有太多的细节,但从声音上看,我真的会好好看看你的设计,看看它是否有意义。
https://stackoverflow.com/questions/4726833
复制相似问题