C#日写点滴(3)

来源:互联网 发布:淘宝刷访客 编辑:程序博客网 时间:2024/06/08 12:20

接口:

      (1)声明接口在语法上与声明抽象类完全相同,但不允许提供接口中任何成员的执行方式。一般情况下,接口中只能包含方法、属性、索引器和事件的声明。

      格式:

      public interface IMyInterface

      {

      }

     (2)不能实例化接口,它只能包含其成员的签名。接口不能有构造函数或字段(因为这隐含了某些内部的执行方式)。接口定义也不允许去处符重载,这不是因为声明它们在原则上有什么问题,而是因为接口通常是公共契约,包含运算符重载会一些与其它.NET语言不兼容问题。例如与vb不兼容,因为vb不支持运算符重载。

    接口定义中还不允许声明成员上的修饰符。接口成员总是公共的,不能声明为虚拟或静态。

    接口引用完全可以看作是类的引用--但接口的强大之处在于,它可以引用任何实现该接口的类!

    如:IMyInterface[] person=new  IMyInterface[2];

          person[0]= new PersonMan();

          person[1]= new PersonWoman();

         其中PersonMan,PersonWoman 为都实现了IMyInterface接口声明的签名。

       (3)接口可以彼此继承,其方式与类的继相同。

                public interface IMyInerfaceOther:IMyInerface
              {

                 //接口新方法声明
              }

 


 

示例:

using System;
using inMain;
using CaiJQ0;
using CaiJQ1;
using CaiJQ2;
using CaiJQ3;
using CaiJQ4;

/// <summary>
/// Summary description for Class1
/// </summary>
///
namespace inMain
{
    public class Class1
    {
        static void Main()
        {
            IMyInerface[] person = new IMyInerface[2];
            person[0] = new PersonMan();
            person[1] = new PersonWoman();

            person[0].Name = "XiaoXiao";
            person[0].Age = 10;
            person[0].ShowInfo();
            person[1].Age = 20;
            person[1].Name = "fengfeng";
            person[1].ShowInfo();

            IMyInerfaceOther personVenus = new PersonVenus();
            personVenus.Name = "Venus";
            personVenus.Age = 200;
            personVenus.ShowInfo();
            personVenus.fly();
        }
    }
}

namespace CaiJQ0
{
    public interface IMyInerface
    {
        int Age
        {
            get;
            set;
        }
        string Name
        {
            get;
            set;
        }
        void ShowInfo();
       
    }
}
namespace CaiJQ1
{
    public interface IMyInerfaceOther:IMyInerface
    {

        void fly();
    }
}

namespace CaiJQ2
{
    public class PersonMan : IMyInerface
    {
        public string name;
        private int age;
        public void ShowInfo()
        {
            Console.WriteLine("PersonMan Name is:{0},age is:{1}",name, age);
        }
        public int Age
        {
            get
            {
                return age;
            }
            set
            {
                age = value;
            }

        }
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        public void Play()
        {
            Console.WriteLine("PersonWoman like Play method!");
        }
    }
}

namespace CaiJQ3
{
    public class PersonWoman : IMyInerface
    {
        public string name;
        private int age;
        public void ShowInfo()
        {
            Console.WriteLine("PersonWoman Name is:{0},age is:{1}", name, age);
        }
        public void sing()
        {
            Console.WriteLine("PersonWoman like sing method!");
        }
        public int Age
        {
            get
            {
                return age;
            }
            set
            {
                age = value;
            }

        }
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
    }
}

namespace CaiJQ4
{
    public class PersonVenus : IMyInerfaceOther
    {
        public string name;
        private int age;
        public void ShowInfo()
        {
            Console.WriteLine("PersonVenus Name is:{0},age is:{1}", name, age);
        }
        public void fly()
        {
            Console.WriteLine("PersonVenus like fly method!");
        }
        public int Age
        {
            get
            {
                return age;
            }
            set
            {
                age = value;
            }

        }
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
    }
}

 

原创粉丝点击