接口是什么
接口是一种用来定义程序的协议,它描述可属于任何类或结构的一组相关行为。接口可有方法、属性、事件和索引器或这四种成员的任何组合类型,但不能包含字段。接口只包含了成员的声明,在继承的类中进行实现。
接口的特点
接口只做声明。
所有接口成员的默认访问类型都是public。
接口不能直接实例化。
必须实现接口的所有方法。
C#是单继承,利用接口可以实现多继承。
接口的声明
public interface Animalone
{
//接口方法不能用修饰符修饰
void ToSpeak();
}
接口的实现
public class Catone : Animalone
{
public void ToSpeak()
{
Console.Write("喵喵喵\r\n");
}
}
public class Dogone : Animalone
{
public void ToSpeak()
{
Console.Write("汪汪汪\r\n");
}
}
public class birdone : Animalone
{
public void ToSpeak()
{
Console.Write("喳喳喳\r\n");
}
}
接口的继承
//接口继承
//C# 单继承,使用接口可以继承多个基类
public interface Animaltwo : Animalone
{
void EatFood();
}
//继承子接口时,要实现所有接口的方法
public class Cattwo : Animaltwo
{
public void EatFood()
{
Console.Write("猫粮\r\n");
}
public void ToSpeak()
{
Console.Write("喵喵喵\r\n");
}
}
显示接口的实现
//显示接口实现
interface AnimalThree
{
void Move();
}
interface Animalfour
{
void Move();
}
public class Cat : AnimalThree, Animalfour
{
void AnimalThree.Move()
{
Console.Write("run\r\n");
}
void Animalfour.Move()
{
Console.Write("swarm\r\n");
}
}
完整代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TestInterface
{
//接口
//定义一个接口,只能做方法声明,继承自接口的类,必须实现接口方法
public interface Animalone
{
//接口方法不能用修饰符修饰
void ToSpeak();
}
public class Catone : Animalone
{
public void ToSpeak()
{
Console.Write("喵喵喵\r\n");
}
}
public class Dogone : Animalone
{
public void ToSpeak()
{
Console.Write("汪汪汪\r\n");
}
}
public class birdone : Animalone
{
public void ToSpeak()
{
Console.Write("喳喳喳\r\n");
}
}
public class zooone
{
public void Speak(Animalone animals)
{
animals.ToSpeak();
}
}
//接口继承
//C# 单继承,使用接口可以继承多个基类
public interface Animaltwo : Animalone
{
void EatFood();
}
//继承子接口时,要实现所有接口的方法
public class Cattwo : Animaltwo
{
public void EatFood()
{
Console.Write("猫粮\r\n");
}
public void ToSpeak()
{
Console.Write("喵喵喵\r\n");
}
}
public class zootwo
{
public void EatFood(Animaltwo animals)
{
animals.EatFood();
}
public void Tospeak(Animaltwo animals)
{
animals.ToSpeak();
}
}
//显示接口实现
interface AnimalThree
{
void Move();
}
interface Animalfour
{
void Move();
}
public class Cat : AnimalThree, Animalfour
{
void AnimalThree.Move()
{
Console.Write("run\r\n");
}
void Animalfour.Move()
{
Console.Write("swarm\r\n");
}
}
class Program
{
static void Main(string[] args)
{
zooone z = new zooone();
z.Speak(new Catone());
z.Speak(new Dogone());
z.Speak(new birdone());
zootwo ztwo = new zootwo();
ztwo.EatFood(new Cattwo());
ztwo.Tospeak(new Cattwo());
Cat cat = new Cat();
AnimalThree three = cat;
three.Move();
Animalfour four = cat;
four.Move();
Console.Read();
}
}
}
![3956112-ad5a2af03dbdc4cb.png](https://i-blog.csdnimg.cn/blog_migrate/7b0567aac1b9b7e1f08dfb867c04bd4a.webp?x-image-process=image/format,png)
2018-12-06_235846.png
参考资料
https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/interfaces/