繁体   English   中英

使用setter和getter JAVA从另一个类访问变量

[英]Accessing variables from another classes with setter and getter JAVA

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

任务:

  • 密码将通过setpassword方法设置。

  • getpassword方法将返回密码。

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

但是,当我运行整个代码时,除了sendmail类不会从users类的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();
   }

 }

注册类和sendmail类中的user1对象不同。 当然,它们的变量以相同的方式命名,但是它们引用不同的对象。 要从用户访问密码,您必须将用户传递给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.
  }
}

问题是,在sendmail类中,您创建了一个新用户users user1 =new users(); ->这样就不会访问先前创建的用户,而是创建一个显然没有密码的新用户。

而是将您的用户传递给注册类中的sendmail函数:

public void settingPassowrd(){

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

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

}

在课堂上sendmail:

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

顺便说一句,我建议您阅读一些Java编码指南。 例如:

  • 类名应始终以大写字母开头
  • 类名通常是单数( class users -> class User
  • 方法名称始终以小写字母开头,并使用camelCase( getpassword() -> 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 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();
}

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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