[英]A subclass type as parameter type in superclass constructor java
So I have a node class and I haven't learned Linked List yet, so I can't use that. 所以我有一个节点类,我还没有学习链接列表,所以我不能使用它。 To construct a node object I want the parameters to be like this:
要构造节点对象,我希望参数如下:
Node(int numberOfNode, type complex or simpel)
I have two subclasses of node called Simpelnode
and complexNode
and so a node object can be either one of them. 我有两个名为
Simpelnode
和complexNode
的节点子类,因此节点对象可以是其中之一。 What do I need to do so that the parameter can be of both types? 我需要做什么才能使参数属于这两种类型?
Use Inheritance 使用继承
public interface Node{
//...
}
public class SimpleNode implements Node{
//...
}
public class ComplexNode implements Node{
//...
}
Then, you can add a Constructor
like that: 然后,您可以添加如下
Constructor
:
public class SimpleNode implements Node{
public SimpleNode(int numberOfNode){
//...
}
}
Node(int numberOfNode, Node node)
Since SimpleNode
and ComplexNode
are both subclasses of Node
, a SimpleNode
is a Node
, and a ComplexNode
is a Node
. 由于
SimpleNode
和ComplexNode
都是Node
子类,因此SimpleNode
是 Node
, ComplexNode
是 Node
。 So using Node
as the argument type will allow passing a SimpleNode
as well as a ComplexNode
. 因此,使用
Node
作为参数类型将允许传递SimpleNode
和ComplexNode
。
you need to create Simpelnode
and complexNode
and make them extend from Node. 你需要创建
Simpelnode
和complexNode
并使它们从Node扩展。
that way you can do: 你可以这样做:
Node n = new Simpelnode();
or 要么
Node n = new complexNode();
also you should read on java inheritance and to understand what it means 你也应该阅读java继承并理解它的含义
As far as i understood your question.. 据我了解你的问题..
Make a Node interface with constructor 使用构造函数创建Node接口
Node(int numberOfNode,Object o)
or Node(int numberOfNode,Node o)
Node(int numberOfNode,Object o)
或Node(int numberOfNode,Node o)
Make two classes implement it SimpleNode and ComplexNode 使两个类实现SimpleNode和ComplexNode
as follows SimpleNode(int numberOfNode,SimpleNode o)
and ComplexNode(int numberOfNode,ComplexNode o)
如下
SimpleNode(int numberOfNode,SimpleNode o)
和ComplexNode(int numberOfNode,ComplexNode o)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.