所以可以使用接口模拟结构的继承

时间:2022-04-11 04:52:21

C#根本入门 七 接口

由于C#语言不撑持多重担任,所以可以使用接口模拟布局的担任,通过使用interface关键字,,界说一个接口。

interface USB { void Read(string[] datas); }

接口与抽象类非常类似,它界说了一些未实现的属性和要领,所有担任它的类都担任这些成员,在这个角度上,可以把接口理解为一个类的模板,接口最终的目的是起到统一的感化。

实现接口的任何类或布局必需实现其所有成员的要领;

接口不能直接实例化,但是可以通过指向子类间接实例化;

接口可以包罗要领和属性的声明,但不能包罗字段;

接口中所有要领、属性默认为public,不能在后面再添加修饰符;

类或布局可以实现多个接口,类可以担任基类并实现一个或多个接口。

抽象类除拥有抽象成员之外,还可以拥有非抽象成员;而接口所有的成员都是抽象的

抽象成员可以是私有的,而接口成员默认是公有的

接口中不能含有结构函数、析构函数、静态成员和常量

C#只撑持单担任,即子类只能担任一个父类,而一个子类却能接受实现多个接口。

操练

计算球的外貌积和体积

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace BallCalculation { interface IArea { void Area();//计算球面积的要领 } interface IVolume { void Volume(); } public class BallCalculation : IArea, IVolume { public void Area() { Console.WriteLine("请输入球的半径"); int r = Convert.ToInt16(Console.ReadLine()); double ar = 4 * Math.PI * r * r; Console.WriteLine("球外貌积为{0}",ar); } public void Volume() { Console.WriteLine("请输入球的半径"); int r = Convert.ToInt16(Console.ReadLine()); double vol = Math.PI * r * r * r * 4 / 3; Console.WriteLine("球体积为{0}", vol); } } class Program { static void Main(string[] args) { BallCalculation ballcal = new BallCalculation(); IArea iar = (IArea)ballcal; IVolume ivol = (IVolume)ballcal; iar.Area(); ivol.Volume(); } } }

运行效果如下图所示:(图13)

所以可以使用接口模拟结构的继承