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

    抽象类和接口成就了面向抽象编程的设计思想,同时也是实现多台的基础技术之一。

    接口是包含一组虚方法的抽象类型,其中每一种方法都有其名称、参数和返回值。接口方法中不能包含任何实现。

    抽象类提供多个派生类共享基类的公共定义,它既可以提供抽象方法,也可以提供非抽象方法。抽象类不能实例化,必须通过继承由派生类实现其抽象方法,因此对抽象类不能使用new关键字,也不能密封;如果子类没有实现所有的抽象方法,则该子类也必须声明为抽象类;

     abstract public class Animal

       //定义静态字段

        static protected int _id;

        //定义属性

        public abstract int Id{get;set;}

        //定义方法

         public abstract void Eat();

    }

    //实现抽象类

    public class Act:Animal

    {

         public override int Id

         {

            get{return _id;}

            set{_id=value;}

         }

       ///如果此处将该方法予以屏蔽,该类会报错,提示该类不实现继承的抽象方法Eat();如果想解除该错误,有两个方法,一个是继承实现Eat方法,二是将该类标记为抽象类;

         public override void Eat()

          {

            }

    }

          public interface Testdd
            { 
                //方法
                int CompareTo(object o);
                //属性
                int Test();
                //索引器
                long this[int index]{get;set;}
            }

    相同点:

      1.都不能直接被实例化,都可以通过继承实现其抽象方法;

      2.都是面向抽象编程的技术基础;

    不同点:

       1.接口支持多继承,抽象类不能实现多继承;

        2.接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法;抽象类可以定义字段、属性、包含有实现的方法;

        3.接口可以作用于值类型和引用类型;抽象类只能作用于引用类型;

        4.抽象类不能使用new关键字,也不能被密封,因为是抽象类不能被实例化;

        5.在抽象方法声明中不能使用static或virtual修饰符; 

  • 相关阅读:
    C#仿制QQ弹出消息框
    Winform下载文件
    asp.net文件下载
    C#FileStream复制大文件【转自www.bitsCN.com】
    C#解压或压缩文件夹
    TreeView无级级绑定
    C# WinForm窗口最小化到系统托盘
    [C#]实现序列号生成器
    VS2005小技巧收集(一)
    Failed TO CREATE LOGFILE GROUP解决
  • 原文地址:https://www.cnblogs.com/xiaolifeidao/p/3817189.html
Copyright © 2011-2022 走看看