是一种引用类型
接口里定义一组函数成员,单是自己不实现它们,而让类来实现(接口的实现与继承相似)。(感觉像只带着抽象方法(或其他抽象东西)的抽象类)
定义的成员默认是public ,但是不能把public 写在上面
一个类同时可以继承自一个基类+实现多个接口
class Program { static void Main(string[] args) { Cat C = new Cat("CC1");//由于Cat实现了接口IPlayWoolBall和IEatFish,
//所以这两个接口里的方法都在Cat中得到了实现,
//可以通过实例C调用接口里定义方法同名的方法 C.PlayWoolBall(); C.EatFish(); IPlayWoolBall playBall = (IPlayWoolBall)C; //声明接口的实例playBall,是通过类的实例C来实现的 playBall.PlayWoolBall();//接口的实例就只能获取到接口里定义过的方法同名的方法 IEatFish eatFish = (IEatFish)C; eatFish.EatFish(); } } abstract public class Pet//当包含抽象方法时,必须用abstract声明 { protected string Name;//protected 保护级别,派生类可访问 public Pet(string name)//基类的构造函数 { Name = name; } abstract public void Speak(); } interface IPlayWoolBall //声明接口 { void PlayWoolBall();//定义了一个函数 PalyWoolBall() } interface IEatFish { void EatFish(); } public class Cat : Pet,IPlayWoolBall,IEatFish//一个类可以实现多个接口,基类和接口都存在的情况下,基类要写最前面 { public Cat(string name):base(name)//构造函数//用关键字base调用了基类的构造函数 { } override public void Speak()//override基类Pet的抽象方法 { Console.WriteLine("子说" + Name); } public void PlayWoolBall() { Console.WriteLine(Name+" play wool ball"); } public void EatFish() { Console.WriteLine(Name+" eat fish"); } }