繁体   English   中英

如何实现参数为 Child class 的抽象方法?

[英]How can I implement an abstract method with parameter as Child class?

ParentClass = {
  def execute(ParentParameterClass parentParamaterClass);
}

ChildClass implements ParentClass = {

 @override
 def execute(ChildParameterClass childParameterClass) = {
     print("Hurray")
 }
}


ChildParameterClass childParameterClass = new ChildParameterClass()
ParentClass parentClass = new ChildClass()
parentClass.execute(childParameterClass) // prints "Hurray"

仅供参考: ChildParameterClass 是 ParentParameterClass 的孩子

我知道这会失败,因为覆盖会引发错误。

将来可能会有新的子类(如 ChildClass),所以我希望它是可扩展的,因此在 ParentClass 中拥有多个执行方法将不起作用。

有什么办法可以做到这一点吗? 我不想在 ChildClass 中使用 ParentParameterClass,因为我想在与 ChildClass 一起使用时强制用户传递 ChildParameterClass。

我想在 Java 和 Python 中执行此操作

谢谢

如果您尝试传递的参数对象是 state,您只需将其更改为:

...
 @override
     def execute(ParentParameterClass childParameterClass) = {
         print("Hurray")
     }
}
ParentParameterClass childParameterClass = new ChildParameterClass()

并让 ChildParameterClass 继承 ParentParameterClass。

另一个选项是使用 generics 允许您将不同的类型传递给方法。

但是,我建议不要通过强制覆盖方法接受完全不同的参数来滥用 inheritance,因为这可能会导致维护问题。 如果参数真的完全不同,请为孩子创建一个新方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM