Java 从子类中的抽象类扩展嵌套类,并使方法使用嵌套类的新定义
我有一个基础抽象类,里面有一个嵌套类。在其中一个子类中,我需要扩展嵌套类,但是从基类继承的抽象方法需要嵌套类的基类定义(对于返回类型和参数)。如何让他们使用嵌套类的新定义? 另外,非抽象方法(我没有重写)也不能正常工作(在我将它们移动到抽象类之前,它们工作得很好)Java 从子类中的抽象类扩展嵌套类,并使方法使用嵌套类的新定义,java,abstract-class,nested-class,Java,Abstract Class,Nested Class,我有一个基础抽象类,里面有一个嵌套类。在其中一个子类中,我需要扩展嵌套类,但是从基类继承的抽象方法需要嵌套类的基类定义(对于返回类型和参数)。如何让他们使用嵌套类的新定义? 另外,非抽象方法(我没有重写)也不能正常工作(在我将它们移动到抽象类之前,它们工作得很好) 我认为最好的方法是声明一个受保护的,可选的抽象工厂方法来创建嵌套的类 大概是这样的: abstract class Base { protected class BaseNested { .... }
我认为最好的方法是声明一个
受保护的
,可选的抽象工厂方法来创建嵌套的
类
大概是这样的:
abstract class Base {
protected class BaseNested {
....
}
protected abstract BaseNested newNested();
}
class Derived extends Base {
class DerivedNested extends BaseNested {
....
}
protected BaseNested newNested() {
return new DerivedNested();
}
}
然后,当基类需要一个新的BaseNested
时,它会调用newNested
,而不是new DerivedNested()
如果出于某种原因,您需要Derived
只处理那些方法的Derived.Nested
,而不是Base.Nested
(您应该仔细评估该决定),那么您可以使用泛型。根据它所处理的嵌套类的类型键入Base
:
abstract class Base<T extends BaseNested> {
protected abstract T newNested();
protected abstract T someMethod();
protected void anotherMethod(T nested) {
//...
}
}
class Derived extends Base<DerivedNested> {
protected DerivedNested newNested() {
return new DerivedNested();
}
//...
}
抽象类基类{
受保护的抽象T newNested();
受保护的抽象T somethod();
受保护的空无热法(T嵌套){
//...
}
}
类派生的扩展基{
受保护的DerivedNested newNested(){
返回新的DerivedNested();
}
//...
}
嗯,我无法让它发挥作用,所以我放弃了整个想法,我将尝试更简单的方法。不过,谢谢你的回答:)
abstract class Base<T extends BaseNested> {
protected abstract T newNested();
protected abstract T someMethod();
protected void anotherMethod(T nested) {
//...
}
}
class Derived extends Base<DerivedNested> {
protected DerivedNested newNested() {
return new DerivedNested();
}
//...
}