라이브러리의 이미지 클래스가 있고 확장하려고합니다. 수퍼 클래스 메소드는 여러 경우에 새로운 수퍼 클래스 객체를 반환합니다. 수퍼 클래스 메서드가 반환 한 객체에서 하위 클래스 메서드를 사용하려면 어떻게해야합니까? 수퍼 클래스 객체를 서브 클래스 객체로 변경하는 방법이 있습니까?슈퍼 클래스 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 - 만약 당신이 (라이브러리 클래스) obj. 내 질문에 내가 분명하지 않았던 것 같아. 만약 당신이 (MyClass) newObj를 의미한다면 그것은 작동하지 않을 것이라는 나의 이해입니다. 수퍼 클래스를 사용하고 하위 클래스를 반환하는 복사 생성자를 만드는 방법이 있는지 궁금합니다. 또는 넓은 클래스를 더 좁게 만드는 다른 수단. 수퍼 클래스에서 서브 클래스로 이동합니다. – alex
왜 그렇게하고 싶습니까? newObj를 MyClass를 기대하는 메소드에 전달해야한다면, Liskov Substitution Principle을 준수하는 한 newObj를 수행 할 수 있어야한다. 진짜 문제가 뭐니? –