【发布时间】:2016-03-17 21:08:04
【问题描述】:
我在理解 Java 中有关继承和多态的一些基本概念时遇到了困难。
我正在尝试为实现给定父接口的子类调用子类方法。但是,当我实例化子类对象并将其放在父类接口中时,我不能只调用这些子类的方法。如何在不影响多态性的情况下做到这一点。
Contract.java
package test;
public interface Contract {
void getLog();
}
myContract.java
package test;
public class myContract implements Contract {
public void getLog()
{
System.out.println("logging in myContract");
}
public void anotherMethod()
{
System.out.println("another method");
}
}
app.java:
package test;
public class app {
public static void main(String[] args) {
// TODO Auto-generated method stub
Contract myContract = new myContract();
//I can't call below method in child class
myContract.anotherMethod();
}
}
【问题讨论】:
-
这是代码异味。如果需要与
MyContract的实例交互,那么静态类型应该是MyContract。或者,您可以将anotherMethod()添加到界面如果它真的属于那里,或者在您使用它的地方向下转换,但向下转换表示设计问题。您没有为任何人提供足够的信息或背景来建议“正确”的替代方案。 -
你想要做的是违背多态性的目的。看到这个相关的问题:What is so important about polymorphism
标签: java