深入分析c# 继承
继承的概念
继承是面向对象编程的一种重要特性,指在一个现有类的基础上创建一个新类。新类继承了现有类的所有属性和方法,在此基础上可以添加新属性和方法,或者重新定义现有方法。被继承的现有类称为父类或基类,新创建的类称为子类或派生类。
继承的语法
c#的继承语法是使用冒号将子类与父类连接起来:
class ChildClass : ParentClass
{
// 子类的其他代码
}
继承的类型
c#中继承分为公有继承和私有继承。
公有继承(public inheritence):子类继承自父类的公有成员,但不能继承父类的私有成员。
私有继承(private inheritence):子类继承自父类的公有成员和私有成员,但不能访问父类的任何成员。
继承的实现
基类初始化
派生类在初始化时需要执行基类的构造函数,使用base
关键字实现调用基类构造函数。
方法覆盖
派生类可以重写基类中已经定义的方法,称为方法覆盖。需要在方法前面使用override
关键字。
抽象类
抽象类用来定义一些重要的方法和属性,但是没有实现。子类需要继承抽象类并实现其中的方法才能创建实例。使用abstract
关键字定义抽象类。
示例说明
示例一:方法覆盖
class BaseClass
{
public void Print()
{
Console.WriteLine("这是基类中的方法");
}
}
class DerivedClass : BaseClass
{
public void Print()
{
Console.WriteLine("这是派生类中的方法");
}
}
static void Main(string[] args)
{
BaseClass bc = new BaseClass();
DerivedClass dc = new DerivedClass();
bc.Print(); // 输出:这是基类中的方法
dc.Print(); // 输出:这是派生类中的方法
}
在上面的示例中,派生类DerivedClass
重写了基类BaseClass
中的Print
方法,执行dc.Print()
将输出“这是派生类中的方法”。
示例二:抽象类实现
abstract class Shape
{
public abstract void Draw();
}
class Circle : Shape
{
public override void Draw()
{
Console.WriteLine("绘制圆形");
}
}
class Rectangle : Shape
{
public override void Draw()
{
Console.WriteLine("绘制矩形");
}
}
static void Main(string[] args)
{
Shape[] shapes = new Shape[2];
shapes[0] = new Circle();
shapes[1] = new Rectangle();
foreach (Shape shape in shapes)
{
shape.Draw();
}
}
在上面的示例中,首先通过abstract
关键字定义了抽象类Shape
,其中包含了一个抽象方法Draw
。然后继承Shape
类,并实现了Draw
方法的两个子类Circle
和Rectangle
。在Main
方法中,定义了一个Shape
类型的数组,并分别实例化了Circle
和Rectangle
类。最后使用循环依次调用每个对象的Draw
方法,将分别输出“绘制圆形”和“绘制矩形”。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深入分析c# 继承 - Python技术站