如何从私有访问变量返回数据?

时间:2013-02-28 17:55:52

标签: java return

这是一个程序,要求用户输入1来存储名称。然后程序将提示用户输入他/她的名字。之后,程序将数据存储在一个数组中。然后我必须使用一种方法来进行存储。但是,我有一个getter和setter方法但我得到一个错误“错误:名称在className中有私人访问权限。”

我想从我的“className”构造函数返回名称。

感谢您的协助。感谢。

主类“ReturnName”

import javax.swing.JOptionPane;

   public class ReturnName
    {
  public static void main (String[] args)
    {

className x = new className();



int menu = Integer.parseInt(JOptionPane.showInputDialog("Choose an option:" + "\n" + 
                                                        "Enter 1 to store name"));

if(menu == 1){
String[] input1 = new String[1];

for(int i = 0; i < input1.length; i ++){

String str1 = JOptionPane.showInputDialog("Enter your name");

input1[i] = str1;


} 
method(input1);

}


}public static void method(String [] input1){ 


String Name = "";



for(int i = 0; i < input1.length; i++){



    Name = input1[i];


}   
className HoldName = new className();
System.out.println(HoldName.Name);

   }


   }

的className

class className{

private int Menu;
private String Name;


public className(){  

   Menu = 0;
   Name = "";

}

public className(String n, int m){

   Menu = m;
   Name = n;


}
public String getName(){

    return Name;
}

public int getMenu(){

    return Menu;
}



public void setName(String n){

    Name = n;
}

public void setMenu(int m){

    Menu = m;
}


     } 

2 个答案:

答案 0 :(得分:5)

是的,因为Name的访问修饰符是私有的,您不能以这种方式访问​​它,因此不要直接调用HoldName.Name使用getter方法HoldName.getName()

答案 1 :(得分:1)

问题是ReturnName尝试读取私有变量Name的值。请记住,私有变量只是:私有,即它只能从声明该变量的对象中读取和写入。如果其他对象想要访问该变量,则必须通过getter方法。

编辑:未打印名称,因为永远不会调用方法setNamemethod中的for循环也是错误的。

执行:

 public static void method(String name){ 
  className holdName = new className();
  className.set(name);
  System.out.println(holdName.getName());
 }

并将其命名为:

 String str1 = JOptionPane.showInputDialog("Enter your name");
 method(str1);