c#的接口

来源:互联网 发布:淘宝冲销量网站 编辑:程序博客网 时间:2024/05/17 09:37

c#不支持多继承,所以引入接口,下面谈谈接口的特点

/*接口:定义用    interface 接口名 { 返回类型 方法名(参数);}

 *         接口中方法不能有访问修饰符,默认为共有
 *         在接口中可以定义属性、事件、索引器、方法
 *         不可以定义:字段,运算符重载,实例构造函数,析构函数
 *         接口不能使用static关键字
 * 
 * 1、 接口可以理解为对一组方法声明的统一命名,但这些方法没有实现,
 *       继承于该接口的类必须实现接口中的方法
 * 显示实现接口
 * 1、方法不能使用任何访问修饰符,默认为私有
 * 2、由于显示实现的成员默认为私有,所以对象不能调用,需要转换为对应的接口
 * 3、实现多个接口时,推荐使用显示的方式
 * 接口与抽象类
 * 1、抽象类使用abstract关键字   接口使用interface
 * 2、都不能实例化成员
 * 3、抽象类可以包含虚方法、非抽象方法、静态成员
 * 4、接口不能包含虚方法和任何静态成员,接口只能定义方法,不能实现方法
 * 5、抽象类不能实现多继承,接口支持多继承
 * 

*/

下面是继承一个接口的例子,可以用对象调用接口中的方法,

using System;
namespace 接口
{
    interface ICustomCompare
    {
        int compareTo(object obj);//接口里的方法是共有的
    }
    public class Person:ICustomCompare
    {
        private int age;
        public int Age
        {
            set{ age = value;}
            get{ return age;}
        }
        public int compareTo(object obj)//必须用public 
        {
            Person p = (Person)obj;
            if (this.age > p.age) {
                return 1;
            } else if(this.age < p.age)
            {
                return -1;
            }else{
                return 0;
            }
        }
    }
    class MainClass
    {
        
        public static void Main (string[] args)
        {
            Person p1 = new Person ();
            p1.Age = 18;
            Person p2 = new Person ();
            p2.Age = 19;
            if (p1.compareTo (p2) == -1) {
                Console.WriteLine ("big");
            } else if (p1.compareTo (p2) == 1) {
                Console.WriteLine ("small");
            } else {
                Console.WriteLine ("equal");
            }
        }
    }
}

下面是一个继承多个接口的例子,注意实现接口和调用接口的方法不同

using System;

namespace 接口
{
    interface IChineseFreeting
    {
        void sayHello();
    }
    interface IAmericanGreeting
    {
        void sayHello();
    }
    class Speaker:IChineseFreeting,IAmericanGreeting
    {
         void IChineseFreeting.sayHello()//用接口名.方法名
        {
            Console.WriteLine ("你好");
        }
         void IAmericanGreeting.sayHello()
        {
            Console.WriteLine ("hello");
        }
    }
    class MainClass
    {
        public static void Main (string[] args)
        {
            Speaker s = new Speaker ();
            IAmericanGreeting ame = (IAmericanGreeting)s;
            ame.sayHello ();
        }
    }
}

0 0
原创粉丝点击