java - 在 Java 中扩展一个类

标签 java polymorphism

我有一个这样的对象列表

ArrayList <Page> pageList = aForeignObject.getAllPages();

还有一个子类

class MyPage extends Page
{

    public void newFunction()
    {
        // A new Feature
    }
}

是否可以通过某种方式将 Page 对象转换为 MyPage 对象?

我很乐意这样做:

MyPage page = pages.get(1); // This will obviously fail 
page.newFunction();

最佳答案

如果 getAllPages() 方法产生的 Page 对象实际上是 MyPage 对象,那么只需使用一个转换(例如 MyPage page = (MyPage) pages.get(1);。如果它们不是(如果您使用的是外部代码,则很可能),则不能使用子类。您可以做什么,然而,是使用组合:

class MyPage{
    private Page p;

    public MyPage(Page aPage){
        p = aPage;
    }

    public void newFunction(){
        //stuff
    }

    public Object oldFunction(){
        return p.oldFunction();
    }
}

然后你可以做这样的事情:

MyPage page = new MyPage(pages.get(1));
page.newFunction();

关于java - 在 Java 中扩展一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3666710/

相关文章:

java - java中的重载和重写既可以是静态多态又可以是动态多态吗?

java - ArrayList 根据 pojo 对象查找字段

java - 将零填充到一位数以形成分钟格式

java - 在 CompletableFuture.allof 中处理超时并记录超时 future 的正确方法

polymorphism - 在 Rust 匹配表达式中保持 DRY

C# Polymorphysm : overloading function, 接受委托(delegate) Action<T> 和 Func<T,R>?

c++ - 在 Polymorph 设计中使用数组

java - KeyFactory.createKey() 这是在数据存储中存储数据的正确方法吗

java - 生成数组类型,例如 Object[].class

java - java中不同类对象的数组