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
成员。你同意一些答案吗?请将其中一个标记为正确或在评论中澄清您的疑问。您是否同意某些答案?请将其中一个标记为正确或在评论中澄清您的疑问。