java - 返回子类型作为父类(super class)型 java

标签 java oop inheritance

如果我有以下代码

public class Can
{
    ...
    public Can makeCan(String cont)
    {   boolean winner = false;
        Can a;
        if(turn)
        {   winner = true;
            a = new PromotionCan(cont,winner);  
        }
        else
        {   a = new Can(cont);
        }
        return a;
    }
    ...
}

首先这是可能的,因为它编译得很好。但我无法使用 PromotionalCan 中的方法执行操作:

public class PromotionCan extends Can
{
    ...
    public boolean isWinner() throws NotEmptyCanException
    if(win)
       {    System.out.println("Can is winner");
           return win;
        }
        else
        {   System.out.println("Can is not winner");
            return win;
        }
    }
    ...
}

makeCan不同时返回 CanPromotionalCan ?如果是这样,当 PromotionalCan 时如何对变量进行操作被退回?谢谢。

编辑: PromotionalCan继承自Can第二种方法在 PromotionalCan

最佳答案

makeCan 只会返回 Can,因为这是它的返回类型,如下行所示:

public Can makeCan(String cont)

我假设 PromotionalCan 是 Can 的子类型,但我的第一个声明仍然成立 - makeCan 只会返回 Can 类型的对象。

关于java - 返回子类型作为父类(super class)型 java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40751558/

相关文章:

java - 如何访问存储在链表集合中的对象的实例变量?

java - Zxing Maven 编译错误

ios - Swift Playground 中的 lldb_expr 是什么?

c++ - 面向对象还是顺序?

java - Libgdx/Java 继承问题

javascript - 继承和原型(prototype)链

java - 将图像添加到 Applet Java

java - 如何从结果集对象返回多行以发送 servlet

java - 使用依赖注入(inject)时是否存在 'new' 的情况?

java - 涉及继承时如何在Hibernate/JPA中指定列名?