C#基础:多态:基类可以定义并实现虚(virtual)方法,派生类可以重写(override)这些方法
2013-02-19 19:54
716 查看
原理:基类可以定义并实现虚(virtual)方法,派生类可以重写(override)这些方法
实例代码:
class Shape
{
//
public int X{get;private set; }
public int Y{get;private set;}
public int Height{get;set;}
public int Width{get;set;}
//
public virtual void Draw()
{
Console.WriteLine("Performing base class drawing tasks");
}
}
class Circle : Shape
{
public override void Draw()
{
// Code to draw a circle...
Console.WriteLine("Drawing a circle");
base.Draw();
}
}
class Rectangle : Shape
{
public override void Draw()
{
// Code to draw a rectangle...
Console.WriteLine("Drawing a rectangle");
base.Draw();
}
}
class Triangle : Shape
{
public override void Draw()
{
// Code to draw a triangle...
Console.WriteLine("Drawing a triangle");
base.Draw();
}
}
class Program
{
static void Main(string[] args)
{
List<Shape> shapes = new List<Shape>();
shapes.Add(new Rectangle());
shapes.Add(new Triangle());
shapes.Add(new Circle());
foreach (Shape s in shapes)
{
s.Draw();
}
Console.WriteLine("press any key to exit.");
Console.ReadKey();
}
}
实例代码:
class Shape
{
//
public int X{get;private set; }
public int Y{get;private set;}
public int Height{get;set;}
public int Width{get;set;}
//
public virtual void Draw()
{
Console.WriteLine("Performing base class drawing tasks");
}
}
class Circle : Shape
{
public override void Draw()
{
// Code to draw a circle...
Console.WriteLine("Drawing a circle");
base.Draw();
}
}
class Rectangle : Shape
{
public override void Draw()
{
// Code to draw a rectangle...
Console.WriteLine("Drawing a rectangle");
base.Draw();
}
}
class Triangle : Shape
{
public override void Draw()
{
// Code to draw a triangle...
Console.WriteLine("Drawing a triangle");
base.Draw();
}
}
class Program
{
static void Main(string[] args)
{
List<Shape> shapes = new List<Shape>();
shapes.Add(new Rectangle());
shapes.Add(new Triangle());
shapes.Add(new Circle());
foreach (Shape s in shapes)
{
s.Draw();
}
Console.WriteLine("press any key to exit.");
Console.ReadKey();
}
}
相关文章推荐
- C#.NET学习笔记---C#中方法覆盖时override和new的比较,abstract和virtual的比较(含C#多态的实现)
- C#继承---基类虚方法virtual,派生类隐藏方法new
- 【KK学习笔记】c# 虚方法 virtual 、 重写方法 override 、new 的使用与理解
- Template Method 在一个方法中实现一个算法,但是推迟定义算法中的某些步骤,从而使其他的类可以重新定义这些步骤
- @Override 重写父类的方法. @Nullable 表示定义的字段可以为空.
- C#基础-方法的重写(new)和覆盖(override)
- C#基础-----虚方法实现多态
- java方法调用之动态调用多态(重写override)的实现原理——方法表(三)
- C#关于虚方法 virtual 和 override 重写 详解
- A.4-继承,方法重写(覆盖)(override),虚函数(virtaul)和多态,抽象方法和抽象类abstract,密封类(sealed)和密封方法,常量的定义(const)
- C#中的继承、重写、覆盖、多态、virtual override 以及其他
- java方法调用之动态调用多态(重写override)的实现原理——方法表(三)
- C#基础-->方法的重载(overload)与重写(override)
- [原创]C#中的继承、重写、覆盖、多态、virtual override 以及其他
- 黑马程序员——虚函数virtual与重写override实现多态
- new,virtual,override,interface,delegate,event-------------C#——方法实现总结
- java方法调用之动态调用多态(重写override)的实现原理——方法表
- C# 基类 派生类 方法隐藏 方法重写
- 如果父类实现并重写了compareTo方法,那么其子类同样具有该方法,可以直接加入TreeSet
- C#方法重写(override)