C# 接口实现方法实例分析
接口是 C# 编程中的一种重要工具,它定义了一个类应该具备的属性、方法等成员,但并不指定它们的具体实现。接口将声明和实现分离开来,使得实现类只需要关注如何实现接口中规定的成员,而不需要关注这些成员应该是什么。本文将演示 C# 中如何实现接口并提供两个示例。
声明接口
使用 interface
关键字声明接口。接口只能包含属性、方法、索引器和事件等成员,而不能包含字段、构造器和析构器。语法如下:
interface IInterfaceName
{
// 成员列表
}
实现接口
使用 class
关键字声明一个类,该类可以实现某个接口。使用 : 接口名
声明该类实现哪个接口。如下所示:
class ClassName : IInterfaceName
{
// 实现接口的成员
}
类必须实现接口中定义的所有成员,并且这些成员必须保持与接口中定义的成员的签名相同。
以下是一个示例,定义了一个 IPrintable
接口,它仅包含一个 Print
方法。然后,我们从 Person
类中实现了这个接口:
using System;
interface IPrintable
{
void Print();
}
class Person : IPrintable
{
public string Name { get; set; }
public int Age { get; set; }
public void Print()
{
Console.WriteLine("Name: {0}, Age: {1}", Name, Age);
}
}
由于 Person
类实现了 IPrintable
接口,因此必须实现 IPrintable
接口中定义的 Print
方法。我们在 Print
中打印出 Person
对象的姓名和年龄。
当然,你可以在一个类中实现多个接口。例如,以下示例定义了一个类 MyClass
,它实现了 IInterface1
和 IInterface2
接口:
interface IInterface1
{
void Method1();
}
interface IInterface2
{
void Method2();
}
class MyClass : IInterface1, IInterface2
{
public void Method1()
{
Console.WriteLine("IInterface1.Method1() is called.");
}
public void Method2()
{
Console.WriteLine("IInterface2.Method2() is called.");
}
}
示例1:使用接口实现动态绑定
动态绑定是指在运行时确定要调用哪个方法。使用动态绑定机制,可以在编写代码时不必关心程序将调用哪个方法,而是在程序运行期间动态地选择要调用的方法。接口和多态概念密不可分。
以下示例定义了一个 IArea
接口,其中包含了一个 GetArea
方法,这个方法返回一个 double
类型的值。我们还创建了两个类,Circle
和 Rectangle
,他们分别实现了 IArea
接口,计算了圆和矩形的面积。然后,我们在主函数中声明一个 IArea
类型的对象,并在运行时确定要调用哪个方法。
using System;
interface IArea
{
double GetArea();
}
class Circle : IArea
{
public double Radius { get; set; }
public double GetArea()
{
return Math.PI * Math.Pow(Radius, 2);
}
}
class Rectangle : IArea
{
public double Width { get; set; }
public double Height { get; set; }
public double GetArea()
{
return Width * Height;
}
}
class Program
{
static void Main(string[] args)
{
IArea shape;
shape = new Circle() { Radius = 5 };
Console.WriteLine("圆的面积为:" + shape.GetArea());
shape = new Rectangle() { Width = 6, Height = 9 };
Console.WriteLine("矩形的面积为:" + shape.GetArea());
Console.ReadKey();
}
}
示例2:使用接口实现数据类型转换
数据类型转换是将一个数据类型转换为另一个数据类型的操作。C# 中有两种类型转换:隐式类型转换和显式类型转换。隐式类型转换是自动进行的,无需显式指定转换操作,而显式类型转换需要使用强制类型转换运算符。
以下示例定义了一个 IConvertible
接口,其中包含了两个方法,ToDouble
和 ToInt32
,这些方法可以将实现接口的类转换为 double
或 int
类型。然后,我们从一个 string
类型的数组中提取了一些数字,将它们转换为 double
和 int
类型,并打印出它们。
using System;
interface IConvertible
{
double ToDouble();
int ToInt32();
}
class MyNumber : IConvertible
{
private double num;
public MyNumber(string s)
{
num = double.Parse(s);
}
public double ToDouble()
{
return num;
}
public int ToInt32()
{
return (int)num;
}
}
class Program
{
static void Main(string[] args)
{
string[] str = { "3.14", "2.56", "9.78", "6.66" };
MyNumber[] nums = new MyNumber[4];
for (int i = 0; i < nums.Length; i++)
{
nums[i] = new MyNumber(str[i]);
}
double[] d = new double[4];
int[] n = new int[4];
for (int i = 0; i < nums.Length; i++)
{
d[i] = nums[i].ToDouble();
n[i] = nums[i].ToInt32();
Console.WriteLine("{0} 转换为 double 类型为 {1}", nums[i], d[i]);
Console.WriteLine("{0} 转换为 int 类型为 {1}", nums[i], n[i]);
}
Console.ReadKey();
}
}
以上就是使用 C# 接口实现方法的实例分析的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#接口实现方法实例分析 - Python技术站