在C#中,我们可以使用关键字base来调用父类的实现方法。base关键字用于从派生类中访问基类的成员。以下是详细讲解“C#中子类调用父类的实现方法”的完整攻略:
1. 基础知识
在C#中,如果派生类中的方法要调用基类中的同名方法,可以使用关键字base来调用。使用base可以实现子类调用基类中的方法从而避免了代码冗余。base关键字必须放在派生类方法的内部,引用基类中的同名函数或属性。
下面展示一个基于类的继承示例,派生类Student类继承了基类Person类,通过调用父类中的getDetails方法实现子类中的getDetails方法:
using System;
namespace BaseExample
{
public class Person
{
public virtual void getDetails(string name, int age)
{
Console.WriteLine($"Name: {name} and Age: {age}");
}
}
public class Student: Person
{
public override void getDetails(string name, int age)
{
base.getDetails(name, age);
Console.WriteLine($"Student name: {name}, Age: {age}");
}
}
class MainClass
{
static void Main(string[] args)
{
Student obj = new Student();
obj.getDetails("Bob", 20);
Console.ReadKey();
}
}
}
在这里,派生类Student继承了基类Person。Student类中的getDetails方法通过调用基类的getDetails方法来实现了子类的getDetails方法。在实例化Student对象后,我们打印输出了学生的名字和年龄。
运行上述代码示例,控制台输出结果如下:
Name: Bob and Age: 20
Student name: Bob, Age: 20
2. 调用父类的构造函数
除了调用父类的方法,子类还可以调用父类的构造函数。这可以通过使用不同类型的构造函数实现。下面是一个示例:
using System;
namespace BaseExample
{
public class Animal
{
public string name;
public Animal(string name)
{
this.name = name;
}
public void makeSound()
{
Console.WriteLine("Animal sound");
}
}
public class Dog: Animal
{
string breed;
public Dog(string name, string breed): base(name)
{
this.breed = breed;
}
public void makeSound()
{
base.makeSound();
Console.WriteLine("Dog Sound");
}
}
class MainClass
{
static void Main(string[] args)
{
Dog d = new Dog("Tommy", "Labrador");
Console.WriteLine($"Name: {d.name}");
Console.Write("Sound: ");
d.makeSound();
Console.ReadKey();
}
}
}
在这里,派生类Dog继承了基类Animal。Dog类中的构造函数通过调用基类的构造函数来初始化父类的成员变量。在实例化Dog对象后,我们打印输出了狗的名字和声音。
运行上述代码示例,控制台输出结果如下:
Name: Tommy
Sound: Animal sound
Dog Sound
结论
使用base关键字可以让子类调用基类中的实现方法和构造函数,从而提高程序的代码复用性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中子类调用父类的实现方法 - Python技术站