Virtual作用:子类可以对父类重写,虚方法是对多态特征体现。代表一类对象的所具有的公共属性或方法。

  public class Animal
{
public string Name { get; set; }
public virtual void Eat()
{
Console.WriteLine("{0}正在吃草",Name);
} }
public class Sheep : Animal
{
public Sheep(){ Name = "羊"; }
public override void Eat()
{
base.Eat();
Console.WriteLine("吃草"); } } public class Tigger : Animal
{
public Tigger() { Name = "老虎"; }
public override void Eat()
{
base.Eat();
Console.WriteLine("老虎吃羊"); }
}
   Animal animal1 = new Sheep();
Animal animal2 = new Tigger();
animal1.Eat();
animal2.Eat();

 abstract作用:子类必须对父类重写,虚方法是对多态特征体现。代表一类对象的所具有的公共属性或方法。

                             如果一个类中包含抽象方法,这个类必须是抽象类。

public abstract class Shape
{
public const double Pi = 3.14;
protected double x, y;
public Shape()
{
x = y = 0;
}
public Shape(double x,double y)
{
this.x = x;
this.y = y;
}
public abstract double Area(); }
//矩形
public class Rectangle : Shape
{ public Rectangle() : base() { }//使用基类的构造函数
public Rectangle(double x, double y) : base( x, y) { }
public override double Area()
{
return x * y;
}
}
//椭圆
public class Ellipase : Shape
{
public Ellipase(double x, double y) : base(x, y) { }
public override double Area()
{
return x * y * Pi;
}
}
//圆形
public class Round : Shape
{
public Round(double x) : base(x, 0) { }
public override double Area()
{
return x*x*Pi;
}
}

  

 double x = 2;
double y = 3;
Shape shape1 = new Rectangle(x,y);
Console.WriteLine("Rectangle:"+ shape1.Area());
Shape shape2= new Round(x);
Console.WriteLine("Round:"+ shape2.Area());
Shape shape3 = new Ellipase(x,y);
Console.WriteLine("Ellipase:"+shape3.Area());

  

C#基础--Virtual与abstract区别、重写的更多相关文章

  1. virtual和abstract区别

    virtual和abstract都是用来修饰父类的,通过覆盖父类的定义,让子类重新定义. 它们有一个共同点:如果用来修饰方法,前面必须添加public,要不然就会出现编译错误:虚拟方法或抽象方法是不能 ...

  2. C#中virtual和abstract区别,举例子

    virtual和abstract都是用来修饰父类的,通过覆盖父类的定义,让子类重新定义. 它们有一个共同点:如果用来修饰方法,前面必须添加public,要不然就会出现编译错误:虚拟方法或抽象方法是不能 ...

  3. C# virtual 和 abstract 区别

    Virtual方法(虚方法) virtual 关键字用于在基类中修饰方法.virtual的使用会有两种情况: 情况1:在基类中定义了virtual方法,但在派生类中没有重写该虚方法.那么在对派生类实例 ...

  4. sealed、new、virtual、abstract与override 趣解

    1. sealed——“断子绝孙” 密封类不能被继承.密封方法可以重写基类中的方法,但其本身不能在任何派生类中进一步重写.当应用于 方法或属性时,sealed修饰符必须始终与override一起使用. ...

  5. sealed、new、virtual、abstract与override 总结

    1. sealed——“断子绝孙” 密封类不能被继承.密封方法可以重写基类中的方法,但其本身不能在任何派生类中进一步重写.当应用于方法或属性时,sealed修饰符必须始终与override一起使用. ...

  6. 基础知识系列☞Abstract和Virtual→及相关知识

    转载地址→http://www.cnblogs.com/blsong/archive/2010/08/12/1798064.html 在C#的学习中,容易混淆virtual方法和abstract方法的 ...

  7. C#中virtual与abstract的区别

    C#中virtual与abstract的区别 C#的virtual & abstract经常让人混淆,这两个限定词都是为了让子类进行重新定义,覆盖父类的定义.但是用法上差别很大. a)     ...

  8. asp.net中virtual和abstract的区别

    这篇文章主要介绍了asp.net中virtual和abstract的区别,较为详细的分析了virtual与abstract的概念与具体用法,并以实例的形式予以总结归纳,需要的朋友可以参考下 本文实例分 ...

  9. asp.net中virtual和abstract的区别分析

    这篇文章主要介绍了asp.net中virtual和abstract的区别,较为详细的分析了virtual与abstract的概念与具体用法,并以实例的形式予以总结归纳,需要的朋友可以参考下 本文实例分 ...

随机推荐

  1. Mac地址转换成long长整型

    Mac地址转换成long长整型 using System;using System.Collections.Generic;using System.IO;using System.Text;usin ...

  2. [Java]两个将秒数转化为日时分秒形式的函数

    比如900秒要反应一下,说15分就直观了.下面两个函数性能差不多,大家任意取用. 代码: import java.util.concurrent.TimeUnit; public class Test ...

  3. mac下如何安装python3?

    1. 安装homebrew $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/insta ...

  4. LC 450. Delete Node in a BST

    Given a root node reference of a BST and a key, delete the node with the given key in the BST. Retur ...

  5. OSG 遍历fbx节点

    count:560 construction_worker 4294967295 osg::MatrixTransform1 Bip001 L Finger02 4294967295 osg::Mat ...

  6. 算法习题---3.08循环小数(UVa202)

    一:题目 输入整数a和b(<=a<=,<=b<=),输出a/b的循环小数表示以及循环节长度. 例如,a=,b=,小数表示为0.(),循环字节长度为21 当循环节长度超过50时, ...

  7. 一百四十七:CMS系统之celery实现邮件和短信异步发送

    celery工作原理 celery官方文档:https://docs.celeryproject.org/en/latest/ 安装:pip install celery windows下还需安装ev ...

  8. Mysql常见索引介绍

    索引是一种特殊的文件,包含了对数据表中所有记录的引用指针.InnoDB引擎的数据库,其上的索引是表空间的一个组成部分. (1).索引的优缺点 优点:加快搜索速度,减少查询时间 缺点:索引是以文件的形式 ...

  9. iOS 判断scrollView是否滑动到底部

      判断scrollView有没有滚动到视图的底部,用来判断下拉刷新的时间.等 - (void)scrollViewDidScroll:(UIScrollView *)scrollView1 { CG ...

  10. javascript模拟生成uuid

    function guid() { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { var r ...