简体   繁体   English

子类类型作为超类构造函数java中的参数类型

[英]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. 我有两个名为SimpelnodecomplexNode的节点子类,因此节点对象可以是其中之一。 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 . 由于SimpleNodeComplexNode都是Node子类,因此SimpleNode NodeComplexNode Node So using Node as the argument type will allow passing a SimpleNode as well as a ComplexNode . 因此,使用Node作为参数类型将允许传递SimpleNodeComplexNode

you need to create Simpelnode and complexNode and make them extend from Node. 你需要创建SimpelnodecomplexNode并使它们从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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM