使用Java中的参数化构造函数创建对象时出错

时间:2018-04-06 02:12:17

标签: java class oop object

我在创建对象和参数化构造函数时遇到错误。

  

Main.java:6:错误:构造函数Cipher类中的密码不能   适用于给定类型

Cipher cy = new Cipher(k);              ^

必需:没有参数

发现:int

原因:实际和正式的参数列表长度不同

这是我的文件看起来像

<b>Main.java</b>

public class Main {
    public static void main(String []args){
   int k=8;
      Cipher cy = new Cipher(k);
      String encrypted_msg = cy.encrypt(message);
      String decrypted_msg = cy.decrypt(encrypted_msg);
      view1.displayResult("Decrypted message: "+decrypted_msg);
        }
    }

<b>Cipher.java</b>

import java.util.*;
public class Cipher
    {
    private int key;
    // Constructor 
    public void Cipher(int k)
        {
        key = k; 
        }// end Constructor 

    } // end class 

2 个答案:

答案 0 :(得分:7)

更改

public void Cipher(int k)

public Cipher(int k)

返回类型为void,这不是构造函数。在Java中,构造函数不指定返回类型。返回类型只是类的名称。

因此,在您的示例中,由于您尚未定义构造函数,因此Java将提供以下格式的默认无参数构造函数:

public Cipher() {}

因此错误消息告诉您只存在无参数构造函数,但您正在调用需要int参数的构造函数。

答案 1 :(得分:1)

<b>Cipher.java</b>

import java.util.*;
public class Cipher
    {
    private int key;
    public Cipher(int k) //remove the void
        {
        this.key = k; //use this for object level reference
        } 

    }