zoukankan      html  css  js  c++  java
  • .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的梦楠姐姐";
            }
        }
  • 相关阅读:
    项目知识
    设计师如何为 Android 应用标注尺寸
    Android开发注意事项
    线程的同步和异步
    复习:IPC机制
    简单的Mvp设计
    泛型
    RxBus的使用
    LinearLayout遇到的问题——利用LinearLayout做横向滑动冲突
    Google搜索技巧、使用Google的其它专业搜索
  • 原文地址:https://www.cnblogs.com/mengnan/p/4824169.html
Copyright © 2011-2022 走看看