MyNewSong类中的构造函数有些问题。谁能解释它到底在做什么?据我所知,它不需要超级类的参数,但它会返回歌曲名称" First Song"对超级班来说,这是对的吗?子类没有它自己的歌曲字段,所以它只是将歌曲名称分配给超类名字段,这是正确的吗?我还没有看到非空(默认)构造函数,在此之前它没有参数,但仍然分配值。
谢谢!
if ( options.profile.referralToken ){ // referral case
var invitation = Invitations.findOne({ token: options.profile.referralToken });
if ( invitation )
user.invitationId = invitation._id; // the invitation used
user.invitedBy = invitation.userId; // the referring user
}
delete options.profile.referralToken;
}
return user;
public class Song {
private String name;
public Song(String name){
this.name = name;
}
}
答案 0 :(得分:1)
当MyNewSong被实例化时,它将“First Song”传递给超级构造函数,后者将其指定为“name”。这个结构没什么奇怪的。由于对name的访问是“私有的”,并且没有访问该字段的公共/受保护方法,因此子类不会看到“name”属性。你看到否定投票的原因是你在发布问题之前应该做更多的阅读。
答案 1 :(得分:1)
MyNewSong
类是Song
的子类。因此,MyNewSong
的实例本身就是Song
。根据您的代码,每个Song
都有一个name
。 MyNewSong
的构造函数将"My First Song"
作为歌曲名称传递给超类构造函数。因此,MyNewSong
的所有实例都具有相同的name
,具体为"My First Song"
。
我建议您阅读有关inheritance in the Java Tutorials的更多信息。
答案 2 :(得分:1)
新歌曲类继承了Song类的属性。命令:
super("First Song");
正在传递参数" First Song"作为超类宋的构造函数的参数。