C#抽象方法、抽象类、虚方法

  • 抽象方法和抽象类都是由abstract修饰

  • abstract的使用注意

    • 抽象方法没有方法体
    • 抽象成员只能存在于抽象类中
    • 抽象类可以有非抽象成员
    • 抽象类的派生类必须实现抽象方法体
    • 抽象类只能用作基类,无法实例化

代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace 视频3._5
{
    class Program
    {
        static void Main(string[] args)
        {
        	Pig pig = new Pig(); //实例化子类
            pig.Shout(); //调用子类方法
            Console.ReadKey();
        }
        public abstract class Animal  //加abstract就是抽象类
        {
        	private string _name;
            public string Name
            {
                get { return _name; }
                set { _name = value; }
            }

            private int _age;
            public int Age
            {
                get { return _age; }
                set { _age = value; }
            }

            private char _gender;
            public char Gender
            {
                get { return _gender; }
                set { _gender = value; }
            }
            public abstract void Shout();  //抽象方法

        }
        public class Pig : Animal  //猪类继承了动物类
        {
            public override void Shout()
            {
                Console.WriteLine("哼哼叫");
            }
        }

虚方法与抽象方法的比较:

虚方法抽象方法
用virtual修饰用abstract修饰
要有方法体不允许有方法体
可以被子类override必须被子类override
除了密封类都可以写只能在抽象类中

override与重载overload的区别:

 重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要。重载overload是面向过程的概念。
 Override是进行基类中函数的重写,Override是面向对象的概念。


不怕不知道,就怕不知道。了解了解,不能等到用时方恨少。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值