.NET重思(二)接口和抽象类的取舍

不得不说,接口和抽象类好像啊~两者都不可以实例化,并且未实现的部分都是由派生类实现的。

他们主要有这么个区别:

(1)抽象类的派生类可以是派生类,换言之,抽象成员在派生类中不一定完全实现,而接口要求其派生类或者结构必须完全实现其成员。

(2)类只能继承一个抽象类,但是可以实现多个接口。

(3)类中可以包含字段什么的,但是接口中只包含未实现的成员,不包含字段。

(4)抽象类只能派生类,但是接口可以派生类和结构。

就我自己理解,派生类就是一组相似的类放在一起,把他们共同的成员抽出来放在基类里,以实现代码复用。有点像WinRT中的资源(Resource)或者网页中的CSS一类的。而接口就是功能的集合,我把一些类的功能暴露给你,你使用就好,不用关心他到底怎么实现的,放在一起,简洁好看。具体的,还得看。。。经验

Interface的示例上一篇写过了,这就写个抽象类的示例吧~

class Program
    {
        static void Main(string[] args)
        {
            Mengnan a = new Mengnan();
            Console.WriteLine("Mengnan实例继承的msg字段是:{0}",a.msg);
            Console.WriteLine("Mengnan实例实现的方法是:",a.getname());
            Console.WriteLine("Mengnan实例实现的属性是:", a.isMale);
        }
    }

    abstract class Person
    {
        internal string msg = "这是Person类";
        abstract public string getname();
        abstract public bool isMale
        {
            get;
        }
    }

    class Mengnan : Person
    {
        public override bool isMale
        {
            get
            {
                return true;
            }
        }

        public override string getname()
        {
            return "我是msp的梦楠姐姐";
        }
    }
原文地址:https://www.cnblogs.com/mengnan/p/4824169.html