Java 子类引用另一个子类,可从同一getter/setter访问
我试图在Java中实现OOP继承设计,其中,如果我看到一个子类Java 子类引用另一个子类,可从同一getter/setter访问,java,oop,inheritance,Java,Oop,Inheritance,我试图在Java中实现OOP继承设计,其中,如果我看到一个子类OrderTypeA,并调用它的getOrderLines(),它将返回类型为OrderLineTypeA的集合。同样,如果我有一个Order的实例,它的getOrderLines()将返回实例collection 我尝试了以下内容,但似乎无法编译 我正在努力实现的目标: 提议的架构: 命令 公共类秩序{ 受保护列表我认为至少有一个问题在这里: public class OrderTypeA extends Order { prot
OrderTypeA
,并调用它的getOrderLines()
,它将返回类型为OrderLineTypeA
的集合。同样,如果我有一个Order
的实例,它的getOrderLines()
将返回实例collection
我尝试了以下内容,但似乎无法编译
我正在努力实现的目标:
提议的架构:
命令
公共类秩序{
受保护列表我认为至少有一个问题在这里:
public class OrderTypeA extends Order {
protected List<OrderLineTypeA> orderLines;
@Override
public List<OrderLineTypeA> getOrderLines() {
return orderLines;
}
@Override
public void setOrderLines(List<OrderLine> orderLines) {
this.orderLines = (List<OrderLineTypeA>)orderLines; // does not compile
}
}
公共类OrderTypeA扩展了订单{
受保护的列表命令行;
@凌驾
公共列表getOrderLines(){
退货订单行;
}
@凌驾
公共无效集合医嘱行(列出医嘱行){
this.orderLines=(List)orderLines;//不编译
}
}
在OrderTypeA的setOrderLines()中,您尝试将OrderLine类型的列表分配给OrderLineTypeA类型的列表。将子类分配给其父类型无效。我认为至少有一个问题在这里:
public class OrderTypeA extends Order {
protected List<OrderLineTypeA> orderLines;
@Override
public List<OrderLineTypeA> getOrderLines() {
return orderLines;
}
@Override
public void setOrderLines(List<OrderLine> orderLines) {
this.orderLines = (List<OrderLineTypeA>)orderLines; // does not compile
}
}
公共类OrderTypeA扩展了订单{
受保护的列表命令行;
@凌驾
公共列表getOrderLines(){
退货订单行;
}
@凌驾
公共无效集合医嘱行(列出医嘱行){
this.orderLines=(List)orderLines;//不编译
}
}
在setOrderLines()中在OrderTypeA中,您尝试将OrderLine类型的列表分配给OrderLineTypeA类型的列表。将子类分配给其父类型无效。您得到了什么错误?在OrderLineTypeA中的重写中,在setOrder方法中,我得到:方法不重写OrderTypeA中的父类中的方法,我得到setter方法,表示提供的类型不是必需的类型。在setOrderLines()中在OrderTypeA中,您尝试将OrderLine类型的列表分配给OrderLineTypeA类型的列表。将子类分配给其父类型无效。如果我遗漏了一些内容,请更正我您遇到了什么错误?在OrderLineTypeA中的重写中,在setOrder方法中,我得到:方法不会从其父类中重写方法,在setter方法中,我发现提供的类型不是必需的类型在OrderTypeA中,您尝试将OrderLine类型的列表分配给OrderLineTypeA类型的列表。将子类分配给其父类型不起作用。如果我遗漏了什么,请纠正我问题是,如何实现这一点?据我所知,OP希望在此类中包含列表
,而不是列表
。它必须声明为setOrderLines(列出医嘱行)
但是从父级重写方法时会出现问题-这些方法将是不同的。转换如何?this.orderLines=(列表)订单行;也在answer@AmongalenOrder
将包含一个OrderLines
列表,而OrderTypeA
将包含一个OrderLineTypeA
列表。更新的问题,我忘记了代码块后的换行符。问题是,如何实现这一点?据我所知,OP希望拥有list
>在这个类中,不是List
。它必须声明为setOrderLines(List orderLines)
,但是从父类重写方法时会出现问题-这些方法将是不同的。转换如何?this.orderLines=(List)订单行;也在answer@AmongalenOrder
将包含一个OrderLines
列表,而OrderTypeA
将包含一个OrderLineTypeA
列表。更新的问题,我忘记了代码块后的换行符。