Java 对象构造函数返回 "null"

Java object constructor returning "null"

Java 的新手! 我创建了一个 class,其中包含用于各个领域的构造函数。但是,当我尝试打印字段时,我收到 "null" 作为输出。请帮我理解为什么。这是 class:`

 public class User {
   //All relevant information to identify each user.
      private String FirstName;
      private String LastName;
      private String Email;
      private long PhoneNum;
      private long CardNum;

   //Build Constructors for User info.

public User(String Fname, String Lname, String Mail, long num, long card)
{
   Fname=FirstName;
    Lname=LastName;
    Mail=Email;
    num=PhoneNum;
    card=CardNum;
}

  //Method to set FirstName.  
 public void setFirstName (String Fname) 
{
    FirstName=Fname;
}
//Method to get FirstName.
public String getFirstName()
{
    return FirstName;
}
 //Method to set LastName. 
public void setLastName (String Lname)
{
    LastName=Lname;
}


 //Method to get Lastname. 
    public String getLastname()
    {
        return LastName;
    }
    //Method to set email.
    public void setEmail (String Mail)
    {
        Email=Mail;
    }
     //Method to get email.
    public String getEmail()
    {
        return Email;
    }
    //Method to set phonenumber.
    public void setPhoneNum(long num)
    {
        PhoneNum=num;
    }
   //Method to get phonenumber.
    public long getPhoneNum()
    {
        return PhoneNum;
    }
   //Method to set credit card number.
        public void setCardNum(long card)
    `enter code here`{
        CardNum=card;
    }
     // Method to get credit card number.
         public long getCardNum()
    {
        return CardNum;
    }

现在当我 运行 这个代码时,我收到 "null":

public class UserDemo {
public static void main(String[] args)
{
    String first="Matt";
    String last="Burns";
    String email="mburns267@yahoo.com";
   long phone=333;
   long card=222;
    User Matt=new User(first,last,email,phone,card);
    System.out.print(Matt.getLastname());
}

我做错了什么?提前致谢!

`

是反过来,而不是:

public User(String Fname, String Lname, String Mail, long num, long card){
    Fname=FirstName;
    Lname=LastName;
    Mail=Email;
    num=PhoneNum;
    card=CardNum;
}

应该是:

public User(String Fname, String Lname, String Mail, long num, long card){
    FirstName = Fname;
    LastName = Lname;
    Email = Mail;
    PhoneNum = num;
    CardNum = card;
}

要避免这种情况,您可以使用 this 关键字。这是一个例子:

String firstName;
public Constructor(String firstName){
    this.firstName = firstName;
}

您的构造函数赋值方式有误:

public User(String Fname, String Lname, String Mail, long num, long card)
{
    // this refers to the current object being constructed
    this.FirstName = Fname;
    this.LastName = Lname;
    this.Email = Mail;
    this.PhoneNum = num;
    this.CardNum = card;
}

Java 构造函数对象应该像这样创建:

public User(String Fname, String Lname)
{
    this.firstName = Fname; 
    //keyword 'this' refers to the new object, so the new object's Fname would equal the firstName place below
    this.lastName = Lname; //same as above
}

要创建新用户,请使用此代码:

User Matt = new("Matt", "Burns"); //Creates a new User Matt, with firstName "Matt" and lastName "Burns"
System.out.println(Matt.getfirstName()); //prints User Matt's firstName to the console.