使用setter和getter JAVA访问其他类中的变量

时间:2018-04-11 08:31:50

标签: java methods get set getter-setter

这是我项目的一个非常简单的例子,它的规模要大得多。

任务:

  • 密码将在setpassword方法中设置。

  • getpassword方法将返回密码。

  • 密码在sendmail类中调用,以便通过电子邮件发送给用户以使用新凭据登录。

但是当我运行整个代码时,除了sendmail类不能从用户类中的getpassword方法访问密码外,一切正常。

我放了一个简单版本的代码:

用户类>>>>>

public class  users {


private String password;


public users (){}

// GETTING PASSWORD
public String getpassword(){

    return password;
}


// SETTING PASSWORD
 public void setapassword(String password){
     this.password=password;
 }




}

注册课程>>>>>>>

public class signup {

public void signsup(){

    users  user1 =new users();
    user1.setapassword("player"); 

    sendmail mail1 =new sendmail();
    mail1.Sendsmail();

}
}

sendmail类>>>>

public class sendmail   {

public void  Sendsmail(){

    users user1 =new users(); // object

    user1.getpassword(); //getting password 

 System.out.println(user1.getpassword()); // If print here I get null
 }
 }

主要注册类>>>>

public class SignupMain {

public static void main(String[] args) {

     signup signup1= new signup();
     signup1.signsup();
   }

 }

3 个答案:

答案 0 :(得分:1)

您的注册类中的user1对象和您的sendmail类是不同的。当然,他们的变量以相同的方式命名,但他们引用到不同的对象。要从用户访问密码,您必须将用户传递给sendmail类,例如:

<强> Signup.java

public class signup
{

  public void settingPassowrd()
  {
    users user1 = new users();
    user1.setapassword( "player" );

    sendmail mail1 = new sendmail();
    mail1.Sendsmail(user1);

  }
}

使用:

public class sendmail
{

  public void Sendsmail(user usr)
  {

    usr.getpassword(); // getting password

    System.out.println( usr.getpassword() ); // will be the proper value from now on.
  }
}

答案 1 :(得分:0)

问题是,在您的sendmail课程中,您创建了一个新用户users user1 =new users(); - &gt;所以你不能访问你之前创建的用户,但你创建了一个显然没有密码的新用户。

相反,请将您的用户传递给注册类中的sendmail函数:

public void settingPassowrd(){

    users  user1 =new users();
    user1.setapassword("player"); 

    sendmail mail1 =new sendmail();
    mail1.Sendsmail(user1);

}

并在课程中发送邮件:

public void  Sendsmail(users user) {
    System.out.println(user.getpassword());
}

顺便提一下,我建议你阅读一些Java编码指南。例如:

  • 班级名称应始终以大写字母
  • 开头
  • 班级名称通常是单数(class users - &gt; class User
  • 方法名称始终以小写字母开头,并使用camelCase(getpassword() - &gt; getPassword()

答案 2 :(得分:0)

请遵循标准编码惯例。我使用标准编码约定更改了代码。只需复制粘贴它,它将工作

用户类

public class  Users {
private String password;
public users (){}
// GETTING PASSWORD
public String getpassword(){

    return password;
}
// SETTING PASSWORD
 public void setapassword(String password){
     this.password=password;
 }
}

注册课程

public class Signup {

public void settingPassowrd(){

    Users  user1 =new Users();
    user1.setapassword("player"); 

    SendMail mail1 =new SendMail(user1);
    mail1.Sendsmail();

}
}

SendMail类

public class SendMail   {
    private Users user1;
    SendMail(Users user1){
        this.user1 = user1
    }
    public void  sendMail(){
    user1.getpassword(); //getting password 
    System.out.println(user1.getpassword()); // If print here I get null
}
}

测试代码的主要类

 public class SignupMain {

public static void main(String[] args) {

 Signup signup1= new Signup();
 signup1.settingPassowrd();
}

}