1.4.3.1 虚方法

  1. 声明一个虚方法需要用到Virtual 关键字,声明虚方法后,就可以在任何派生类中重写该方法
        public class Shape
        {
            public virtual void Draw() =>
            Console.WriteLine($"Shape with Positio and Size ");
        }
  1. 如果实现代码只有一行,可以把virtual和表达式体一起使用。
  2. 属性也可以声明为virtual 对于虚属性的定义,语法与非属性相同,但是要在定义中添加关键字virtual。同时虚方法的生命也可以使用完整的属性声明。
			public virtual Size Size { get; set; }
            private  Size _size;
            public virtual Size Size
            {
                get => _size;
                set => _size = value;
            }
  1. C#中需方法的声明需要使用virtual来声明,使用override来重写。
    方法的重写可以对基类(Object)中的ToString()方法进行重写,说明ToString()是虚方法。
		public class Square : Shape
        {
            public override void Draw()
            {
                Console.WriteLine($"Square with Positio and Size");
            }
            public override string ToString()
            {
                return "这是对基类Object中的ToString方法的重写";
            }
        }
  1. 重写虚方法时,方法名和签名(签名指:一个方法中所有的参数类型、数量、返回类型)必须和虚方法相同,不然不能实现虚方法的重写。

  2. 字段和静态方法都不能声明为virtual,因为virtual 这个概念值时对类中的实力函数成员有意义。

        public class Position
        {
            public int X { get; set; }
            public int Y { get; set; }
            public override string ToString() => $"X: {X}, Y: {Y}";
        }
        public class Size
        {
            public int Width { get; set; }
            public int Height { get; set; }
            public override string ToString() => $"Width: {Width},Height: {Height}";
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值