C#中Abstract,Virtual,Interface

本文详细解析了C#中Virtual、Abstract及Interface三个关键字的区别与应用。通过生动的例子介绍了它们的基本概念、使用场景及代码实现,帮助读者更好地掌握面向对象编程的核心原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  
      最近一直好懒,真的好懒,琐事也多。学习也慢慢落下了,得慢慢补回来了。
      学习一下AbstractVirtualInterface这三个关键字。其实在项目开发中,用到的地方着实不多。

        Virtual--虚方法
        在基类中使用该关键字定义某方法,可以在派生类中使用override关键字重写该方法
                                                         派生类也可以不重写,直接使用基类中的方法
        Abstract--抽象方法
        抽象方法所在的类必须为抽象类
        抽象类不能直接实例化,必须由派生类实现
        抽象方法不能包含主体【没有主体的意思就是一个方法没有{}】,必须由派生类override方式实现该方法,和interface有点像

        Interface--接口
        个人觉得和抽象方法差不多,应该说用法差不多

        virtual意义(举例):爸爸告诉儿子,这边有座金山,你可以挖出来,我有一个现成的方法告诉你怎么挖,
        儿子可以使用爸爸的方式挖,也可以自己override用新的方式挖
        abstract意义(举例):爸爸告诉儿子,这边有座金山,你可以挖出来,没有现成方法,只能儿子自己去找方法挖(而且是必需找)

下面代码解释一番:
        public abstract class Person
        {
            public virtual void MorningGreeting()
            {
                Console.WriteLine("Good Morning");
            }
            public abstract void EveningGreeting();//抽象方法不能包括主题
        }
        public class Chinese : Person
        {
            public override void MorningGreeting() //重写基类中的方法,不是必须的。不写则使用基类中的方法
            {
                Console.WriteLine("早上好");
            }
            public override void EveningGreeting()//重写基类中的方法,必须的。
            {
                Console.WriteLine("晚上好");
            }
        }
        public static void TestVirtualAbstract()
        {
            Chinese chinese = new Chinese();
            chinese.MorningGreeting();
            chinese.EveningGreeting();
        }

        #region 举例一下interface
        public interface IPerson
        {
            void MorningGreeting();        //错误  1.不能使用public修饰符 2.接口成员不能有定义
        }
        public class IChinese : IPerson
        {
            public void MorningGreeting()
            {
                Console.WriteLine("早上好");
            }
        }
        public class IEnglishmen : IPerson
        {
            public void MorningGreeting()
            {
                Console.WriteLine("Good Morning");
            }
        }
        public class IJapanese : IPerson
        {
            public void MorningGreeting()
            {
                Console.WriteLine("おはよう");
            }
        }
        public static void TestInterface()
        {
            IPerson person;
            person = new IChinese();
            person.MorningGreeting();
            person = new IEnglishmen();
            person.MorningGreeting();
            person = new IJapanese();
            person.MorningGreeting();
        }
        #endregion

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值