计算机系统应用教程网站

网站首页 > 技术文章 正文

多态 C#

btikc 2025-01-16 18:10:12 技术文章 19 ℃ 0 评论

关注我,为您分享C#技术实现

同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。

多态性通过派生类(子类)覆写基类中的虚函数型方法来实现

C#支持两种多态性:

  1. 编译时---重载(overload)
  2. 运行时---虚方法和重写(override)

虚成员和重写

  1. 指在基类中申明了方法、属性、索引器或事件,也做了一个最简单的处理。
  2. 使用virtual关键字将成员申明为虚成员

代码示例:

/// <summary>

/// 面积(基类)

/// </summary>

public class Dimensions

{

public const double PI = Math.PI;//圆周率,常量

protected double x, y;//分别代表长、宽

public Dimensions()

{

//空的构造函数

}

public Dimensions(double x, double y)

{

this.x = x;

this.y = y;

}

public virtual double Area()

{

//计算面积,虚方法,等待被重写

return x * y;

}

}

public class Circle : Dimensions

{

//圆

public Circle(double r)//这个构造函数的目的就是去实例化基类,可以做一些事情的

: base(r, 0)

{

}

/// <summary>

/// 重写基类的计算面积的方法

/// </summary>

/// <returns></returns>

public override double Area()

{

return PI * x * x;

}

}

/// <summary>

/// 球体

/// </summary>

public class Sphere:Dimensions

{

public Sphere(double r)

:base(r,0)

{

}

public override double Area()

{

return 4 * PI * x * x;

}

}

/// <summary>

/// 圆柱体

/// </summary>

public class Cylinder: Dimensions

{

public Cylinder(double r,double h)

:base(r,h)

{

}

public override double Area()

{

return 2 * PI * x * x + 2 * PI * x * y;

}

}

运行结果:

虚方法规则:

  1. 默认情况下,方法是非虚拟的。不能重写非虚方法。
  2. Virtual修饰符不能与static、abstract、private或override修饰符一起使用。
  3. 除了声明和调用语法不同外,虚拟属性的行为与抽象方法一样。
  4. 在静态属性上使用virtual修饰符是错误的。
  5. 通过包括使用override修饰符的属性声明,可在派生类中重写虚拟继承属性。

隐藏基类方法:

  1. 若要隐藏继承的成员,则使用new修饰符修饰该成员

/// 面积(基类)

/// </summary>

public class Dimensions

{

public const double PI = Math.PI;//圆周率,常量

protected double x, y;//分别代表长、宽

public void Info()

{

//方法体

}

}

public class Circle : Dimensions

{

public new void Info()

{

////方法体

}

}

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表