我很难将一个人课程扩展到患者班级
我有一个Person类,其构造函数看起来像
public Person(String firstname,String surname) {
fFirstname=firstname;
fSurname=surname;
}
然后我有一个患者类
公共课患者延伸人
我希望为患者看起来像
的构造函数public Patient(String hospNumber) {
fFirstname = lookup(hospNumber,"firstname");
fSurname = lookup(hospNumber,"surname");
}
但是我得到了Patient构造函数需要的投诉(String,String)。 我可以看出为什么会这样,但是无法看到如何扩展患者的人员类别。
答案 0 :(得分:4)
只需将这两个方法调用的结果传递给super
构造函数:
public Patient(String hospNumber) {
super(lookup(hospNumber,"firstname"), lookup(hospNumber,"surname"));
}
这些方法必须是静态的,因为否则它们被调用的this
在被调用时尚未构建。
答案 1 :(得分:2)
您可以在class Program {
static void Main( string[] args ) {
PrintColoredString( "First", "firstString", ConsoleColor.Green );
PrintColoredString( "second", "secondString", ConsoleColor.Cyan );
Console.ResetColor();
Console.ReadKey();
}
private static void PrintColoredString(string key, string value, ConsoleColor color) {
Console.ForegroundColor = color;
Console.Write( "{0} {1} ", key, value );
}
}
类
Person
或者
您需要使用public Person() {
}
方法将构造函数调用Person类作为其2-arg构造函数
super
答案 2 :(得分:2)
将患者构造函数更改为此。
public Patient(String hospNumber) {
super(lookup(hospNumber,"firstname"), lookup(hospNumber,"surname"));
}
但是lookup
方法需要是静态的才能执行此操作。
否则你将不得不改为:
public Patient(String hospNumber, String firstname, String surname) {
super(firstname,surname);
}
或类似的东西。
最后,您还可以向Person类添加另一个构造函数。像Person()
一样,稍后设置其余的细节。这样你甚至不必在患者的构造函数上写super()。
附注: 只要不具有相同的参数,类就可以有多个构造函数。
super()
调用超类的构造函数(该类继承的类)。