C# 调用重写方法
下面显示了我的3个类:C# 调用重写方法,c#,C#,下面显示了我的3个类:Person、Employee和salareyemployee 每个类(从右侧)从左侧继承该类。例如:SalaryEmployee继承自Employee class Person { private string address; private string name; public Person(string givenName, string givenAddress) { name = givenName;
Person
、Employee
和salareyemployee
每个类(从右侧)从左侧继承该类。例如:SalaryEmployee
继承自Employee
class Person
{
private string address;
private string name;
public Person(string givenName, string givenAddress)
{
name = givenName;
address = givenAddress;
}
public virtual void outputName()
{
MessageBox.Show("My name is " + name);
}
public void outputAddress()
{
MessageBox.Show("My address is " + address);
}
public void setName(string newName)
{
name = newName;
}
public void setAddress(string newAddress)
{
address = newAddress;
}
}
class Employee : Person
{
private string NINumber;
public Employee(string givenName, string givenAddress) : base(givenName, givenAddress)
{
}
public void setNINumber(string givenNumber)
{
NINumber = givenNumber;
}
public void getNINumber()
{
MessageBox.Show("My National Insurance Number is " + NINumber);
}
}
class SalaryEmployee : Employee
{
private string name;
private string address;
public SalaryEmployee(string givenName, string givenAddress) : base(givenName, givenAddress)
{
name = givenName; address = givenAddress;
}
public override void outputName()
{
MessageBox.Show("My name is " + "S_" + name);
}
}
OOP对我来说是相当新的,我正试图掌握继承的诀窍。我面临的问题是,我创建了一个名为“PersonFive”的对象:
SalaryEmployee personFive = new SalaryEmployee("Bob", "North Pole");
//忽略我用作参数的地址“North pole”,它仅用于本例
我能够调用.outputName()
方法,输出将是:
"My name is Bob"
但是,将调用基方法而不是重写的方法。我希望它给我的输出是“我的名字是S_Bob”它对我有用,你可能没有发布导致错误的实际代码
它对我有效,您可能没有发布导致错误的实际代码
我建议您在Console应用程序中创建一个非常简单的示例,并检查覆盖方法的行为。代码可以工作,但您不必在SalaryEmployee中创建第二个“name”变量。Person类应该有一个非私有名称属性(您现在有一个私有字段)。然后,输出将是“我的名字是S_”+base.name;我懂了。谢谢。我建议您在Console应用程序中创建一个非常简单的示例,并检查覆盖方法的行为。代码可以工作,但您不必在SalaryEmployee中创建第二个“name”变量。Person类应该有一个非私有名称属性(您现在有一个私有字段)。然后,输出将是“我的名字是S_”+base.name;我懂了。谢谢。这应该是评论而不是回答。它实际上并没有回答这个问题。对不起,我当时没有发表评论的特权(低于15分),但我试着帮忙。现在,你否决了另一个点。无论如何,谢谢。如果你没有代表评论,正确的做法是继续,而不是添加一个实际上不是答案的“答案”。这应该是一个评论而不是答案。它实际上并没有回答这个问题。对不起,我当时没有发表评论的特权(低于15分),但我试着帮忙。现在,你否决了另一个点。无论如何,谢谢。如果你没有代表评论,正确的做法是继续,而不是添加一个实际上不是答案的“答案”。