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是面向对象的概念。


不怕不知道,就怕不知道。了解了解,不能等到用时方恨少。
发布了72 篇原创文章 · 获赞 40 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44031029/article/details/104996241