抽象类和接口

来源:互联网 发布:淘宝网如何盈利模式 编辑:程序博客网 时间:2024/05/21 11:32

一直没有搞明白过这两个是什么鬼,今天读了好几篇文章,认真的研究了一下,还是有进步的,整理笔记
http://www.cnblogs.com/Mryang-blog-cn/p/cxl.html
http://yinny.iteye.com/blog/1152430
http://www.cnblogs.com/tianxue/p/5641555.html
http://www.cnblogs.com/blsong/archive/2010/08/12/1798064.html

抽象类
不能被实例化的类被称为抽象类,抽象类是派生类的基类

 public abstract class TestAbstract    {        //抽象类不能进行实例化,只能被继承        public void ShiFunInAbs()        {            Console.WriteLine("ShiFunInAbs");        }        public abstract void AbsFunInAbs();    }    internal class TestAbstractSon : TestAbstract    {        public override void AbsFunInAbs()        {            Console.WriteLine("AbsFunAbs");        }    } static void Main(string[] args)        {            #region  测试抽象类            TestAbstractSon testAbstractSon = new TestAbstractSon();            testAbstractSon.ShiFunInAbs();            testAbstractSon.AbsFunInAbs();            Console.ReadKey();            #endregion}
  1. 抽象类可以同时包含抽象方法和非抽象方法
  2. 抽象方法只在派生类中真正实现,这表明抽象方法只存放函数原型,不涉及主体代码
  3. 派生自抽象类的类需要实现其基类的抽象方法,才能实例化对象
  4. 使用override关键字可以在派生类中实现抽象方法,经override声明重写基类方法,其签名必须与override方法签名相同。
  5. 基类实现抽象类,则派生类不需要重新实现该抽象类
  6. 抽象类并不仅仅只是一种实现技巧,它更代表一种抽象的概念,从而为所有的派生类确立一种约定。

——————————————————————————————————
接口

public interface InterfaceTest    {        void ConsoleInfo();    }
  1. 一个接口就相当于一个抽象类,但是它不能包含任何实现方法
  2. 接口的每个方法必须都在派生类中进行实现
  3. 接口有时候可以看成是类的模具,它指明一个类该提供哪些内容
  4. 接口只限于方法、索引器、属性的声明,不能包含字段、构造器和常量等
  5. 接口成员是隐式公开的,如果对其进行显示指定访问级别,就会出现编译器错误
  6. 在指定方法时,只需要给出返回类型、名称和参数列表,然后以分号结束
  7. 实现接口的语法同实现类,以冒号隔开,只能继承一个基类,但是可以继承多个接口
  8. 接口中的方法只能实现,不能重写

—————————————————————————————————
这里写图片描述

 public interface InterfaceTest    {        void ConsoleInfo();    }    /// <summary>    /// 继承类中的公共方法,并且在抽象类中定义自己的个性方法    /// </summary>    public abstract class SonOfInterface:InterfaceTest {        public void ConsoleInfo() {            Console.WriteLine("Interface in abstract class");            Console.ReadKey();        }        //定义自己的个性方法        public abstract void ConsoleAdd();     }    public class GrandSon1OfIntereface : SonOfInterface    {        public override void ConsoleAdd()        {            Console.WriteLine("1+1=2");            Console.ReadKey();        }    }    public class GrandSon2OfIntereface : SonOfInterface    {        public override void ConsoleAdd()        {            Console.WriteLine("2+2=4");            Console.ReadKey();        }    }
原创粉丝点击