zoukankan      html  css  js  c++  java
  • 抽象类与接口的区别

    目录 

    在进行深入了解时,先做一道题吧,检测一下自己的基本功如何

    class A
            {
                public A()
                {
                    PrintFields();
                }
                public virtual void PrintFields() { }
            }
            class B : A
            {
                int x = 1;
                int y;
                public B()
                {
                    y = -1;
                }
                public override void PrintFields()
                {
                    Console.WriteLine("x={0},y={1}", x, y);
                }
            }

    static void Main(string[] args)
            {
                B b = new B();
                b.PrintFields();

                Console.ReadLine();
            }

    这样输出结果是什么呢?点击ViewCode查看答案

    View Code
    x=1,y=0
    x=1,y=-1
    
    为什么呢?
    B b = new B()时,先执行A的构造函数,输出结果时,还没有执行B的构造函数,此时y=0
    b.PrintFields(); 这个时候已经执行过B的构造函数,此时y=-1

    抽象类与接口的对比已经有很多人写了,我就不详细介绍了,只对我目前的了解程序做一个总结

      抽象类是一类事物的抽象,比如,宝马、奔驰、奥迪都是车(抽象类)。

          接口定义一种行为:比如上面的三类车都会跑(接口),跑是每个车的行为,但是跑的具体方法有所不同。

    这个比喻这说明抽象类与接口的表现形式不同,如果想深入了解请参考以下文章

    http://kb.cnblogs.com/page/42159/

    http://www.cnblogs.com/lovemyth/archive/2008/09/08/828909.html

    这两篇文章足以能说明抽象类与接口的区别了。

  • 相关阅读:
    AutoMapper在ABP框架
    Github for Windows使用介绍
    Net中的反应式编程
    webstorm创建nodejs + express + jade 的web 项目
    Nancy 框架
    Quartz.NET 任务调度框架
    从电商秒杀与抢购谈Web系统大规模并发
    SVN中tag branch trunk用法详解
    Hsql中In没有1000的限制
    Gradle sourceCompatibility has no effect to subprojects(转)
  • 原文地址:https://www.cnblogs.com/Fengger/p/2585401.html
Copyright © 2011-2022 走看看