0
我有一个库的图像类,我试图扩展。超类方法在几种情况下返回新的超类对象。如何在超类方法返回的对象上使用子类方法?有没有办法将超类对象改为子类对象?有没有办法将一个超类obj变成一个子类obj?
public class LibraryClass extends SomeBaseClass {
LibraryClass someMethodThatChangesDataReturningNewObject() {
}
}
public class MyClass extends LibraryClass {
// methods that extends functionality
// possible to override superclass method calling it and turning the LibraryClass
// obj into a MyClass obj and return that?
}
someRandomMethod() {
MyClass obj = new MyClass;
LibraryClass newObj = obj.someMethodThatChangesDataReturningNewObject();
// possible to bind my subclass methods to newObj?
}
只需使用一个演员。 – ApproachingDarknessFish
Valek - 如果你的意思是(LibraryClass)obj。我想我的问题并不清楚。如果你的意思是(MyClass)newObj,这是我的理解,将无法正常工作。我想知道是否有一种方法可以创建一个需要超类并返回子类的复制构造函数。或者其他一些缩小范围的方法。从超类到子类。 – alex
你为什么想这样做?如果您需要将newObj传递给期望MyClass的方法,那么只要您遵守Liskov替换原则,就应该可以这样做。你真正的问题是什么? –