首页 > 解决方案 > 与参数具有相同原始类型的构造函数

问题描述

我有一个任务要求我创建一个数据类作为我所有其他类的“节点中心”,例如 LinkedList、Stack 和队列的类以“提供”。我在 Data 类中创建构造函数来处理 LinkedList、Stack 和 Queue 类。在为队列实现构造函数之前,我没有遇到任何问题。在 Data 类的 Stack 部分中,我已经创建了一个公共 Data 构造函数,其中一个 int 作为构造函数中的参数。当我尝试使用 int 作为队列参数创建另一个公共 Data 构造函数时,我收到错误:Data(int) 已在 Data 中定义。这是我的堆栈代码:

/*
    STACK WITH AN ARRAY
    */
    int size; //initialize size
    int stackArray[]; //initialize array
    int top; //initialize top

    public Data(int size) //constructor
    {
        this.size = size;
        this.stackArray = new int[size];
        this.top = -1;
    }

这是我的队列代码:

/*
    QUEUE WITH AN ARRAY
    */
    public int Queue[]; //establish queue array and variables
    public int front;
    public  int rear;
    public int queueSize;
    public int len;

    public Data(int nQueue)//constructor
    {
        size =nQueue;
        len = 0;
        Queue = new int[size];
        front = -1;
        rear = -1;
    }

我该如何解决这个问题,以便我可以拥有 2 个具有相同参数类型的构造函数?

标签: javaconstructor

解决方案


它们都是 int 类型的构造函数。Java 不关心您命名 int 参数的名称,因此它们看起来像同一个构造函数(至少对 java 而言)。由于您不能有两个具有相同参数的构造函数,因此您有两个选择。

  1. 给其中一个构造函数一个不同的数据类型参数。
  2. 给其中一个构造函数另一个参数。(2个论点)

这些中的任何一个都将允许 jvm 区分您的两个构造函数。


推荐阅读