接口:
关键词:interface
接口属于引用类型,用来定义属性,方法和索引器,
接口本身不实现这些成员,属于多态的一种表现
接口默认访问修饰符是public,不要用其他的修饰符
接口可以实现多继承,一个类可以实现多个接口,一个接口也可以继承多个接口
接口的成员是抽象的(没有具体实现),实现接口的类或者结构体需要实现这些成员
主要用途是让类或者结构体去继承 必须要实现,否则会报错
注意接口是抽象的,不能直接实例化
接口只能通过实现了的类或者结构体来创建
public interface IShape
{
//这是一个抽象方法
double Area();
string Name { get; set; }
}
//接口可以实现多继承,一个类可以实现多个接口,一个接口也可以继承多个接口
public interface IDShape : IShape
{
//接口继承了接口
double Volume();//体积
}
public class Circle:IShape
{
//继承过来的属性
public string Name { get; set; } = "圆";
//拓展自己的
public double Radius { get; set; }
//继承接口里声明的方法
public double Area()
{
return Math.PI * Radius * Radius;
}
}
//因为IDShape接口继承了IDShape接口,所以当前类需要把这两个接口里面所有的字段都实现
public class Sphere: IDShape
{
public string Name{ get; set; } = "球";
public double Radius { get; set; }
public double Area()
{
return Math.PI * Radius * Radius;
}
public double Volume()
{
return (4/3)*Math.PI*Math.Pow(Radius,3);
}
}
接口与类的区别:
都可以定义一个类的契约,一个使用interface关键字,一个使用abstract关键字,接口中成员默认就是抽象的,包括方法,属性,索引器和事件,但是不能包含字段分和构造函数,也不能有静态成员
一个类可以实现多个接口的继承,接口本身不能被实例化,但是类可以
注意:一个类只能继承一个抽象类 抽象类不能被实例化,但是可以被派生类许所继承
使用场景:接口:定义一组行为规范,但不提供具体实现的场景(只声明)
抽象类:用来定义一组共享的行为,可以提供场景(有实现)
抽象类因为属于抽象类,所以也能继承接口