Java从传入对象设置超级扩展类

Java从传入对象设置超级扩展类,java,Java,我有一节这样的课 public class User implements UserInterface, Parcelable { public User(int userID, String firstName, String lastName, String mobileNumber, Date dateAccountCreated) { this.userID = userID; this.firstName = firstName;

我有一节这样的课

public class User implements UserInterface, Parcelable
{
    public User(int userID, String firstName, String lastName, String mobileNumber, Date dateAccountCreated)
    {
        this.userID = userID;
        this.firstName = firstName;
        this.lastName = lastName;
        this.mobileNumber = mobileNumber;
        this.dateAccountCreated = dateAccountCreated;
    }
}
然后我有另一个类扩展到:

public class Invitee extends User
{
    private int eventDescision; 
    public Invitee(User u, int eventDescision)
    {
        super() = u;
        this.eventDescision = eventDescision;
    }
}
显然这行
super()=u不起作用。但是,如果我传递被邀请者接收的用户对象并将其设置为扩展对象,而不必创建另一个构造函数,那么如何实现此功能?我知道我可以将对象作为带有getter和setter的变量,但是,我喜欢它的流动方式,而不必这样做,因为被邀请者总是用户。

它应该是:

super(u.getUserID(), 
      u.getFirstName(), 
      u.getLastName(), 
      u.getMobileNumber(), 
      u.getDateAccountCreated());
它应该是:

super(u.getUserID(), 
      u.getFirstName(), 
      u.getLastName(), 
      u.getMobileNumber(), 
      u.getDateAccountCreated());

User
您在
Invitee
中收到的构造函数是一个真实实例,您正在创建另一个实例。您不能在超级构造函数中分配一个实例,只能使用复制构造函数复制它。

User
您在
Invitee
中收到的构造函数是一个真实实例,您正在创建另一个实例。不能在超级构造函数中分配一个实例,只能使用复制构造函数复制它。

不能自动将基类的实例传递给子类构造函数中的基类构造函数调用(
super

您可能要做的是在
super
调用中传递基类的属性

例如,is用户属性不是私有的:

public Invitee(User u, int eventDescision) {
  super(u.userID, u.firstName, u.lastName, u.mobileNumber, u.dateAccountCreated);
...

无法自动将基类的实例传递给子类构造函数中的基类构造函数调用(
super

您可能要做的是在
super
调用中传递基类的属性

例如,is用户属性不是私有的:

public Invitee(User u, int eventDescision) {
  super(u.userID, u.firstName, u.lastName, u.mobileNumber, u.dateAccountCreated);
...
你可以:

  • 在被邀请者中使用装饰设计模式
  • 定义构造器用户(用户u)
  • 正如人们之前所说的:对所有参数使用super()
  • 请记住,super正在调用超类的构造函数,因此您不能调用未定义的构造函数。

    您可以:

  • 在被邀请者中使用装饰设计模式
  • 定义构造器用户(用户u)
  • 正如人们之前所说的:对所有参数使用super()

  • 请记住,super正在调用超类的构造函数,因此您不能调用未定义的构造函数。

    或者,或者添加一个以User为实例的构造函数,然后调用super(u);是的,我假设他不想更改他的
    用户
    类,但通常你是对的。:)那我就这么做。我以为你能做我想做的事。我认为这应该是可能的。不要忘记为
    用户
    成员提供getter。要么这样,要么添加一个以User为实例的构造函数,并调用super(u);是的,我假设他不想更改他的
    用户
    类,但通常你是对的。:)那我就这么做。我以为你能做我想做的事。我认为这应该是可能的。别忘了为
    用户提供getter
    成员。你同意一些答案吗?请将其中一个标记为正确或在评论中澄清您的疑问。您是否同意某些答案?请将其中一个标记为正确或在评论中澄清您的疑问。