使用接口的默认实现
使用接口来定义变量和接受 实现接口的类实例
以及实现接口但是不定义方法的特殊情况
适合初学C#者
CSDN技术分享:探索C#接口默认方法的实现(文心一言AI生成)
在C#编程中,接口作为一种定义类行为的契约,通常不包含具体实现。但自C# 8.0起,接口支持默认方法的引入,为接口提供了更为灵活和强大的功能。以下是一个简短示例,展示了如何在C#中定义接口默认方法,并在实现该接口的类中覆盖这些方法。
代码段首先定义了一个名为
Interface1
的接口,其中包含一个默认实现的Method
方法。随后,我们定义了两个类class1
和class2
,它们都实现了Interface1
接口。class1
覆盖了Method
方法,提供了自己的实现;而class2
则未覆盖该方法,因此将使用接口中的默认实现。在
Program
类的Main
方法中,我们展示了如何创建这些类的实例,并通过接口类型的变量调用Method
方法。特别地,当使用class2
的实例调用Method
时,将展示接口默认方法的作用。需要注意的是,尽管
class2
未显式实现Method
方法,但由于接口默认方法的存在,我们仍可以通过class2
的实例调用该方法,而不会引发编译错误。这一特性极大地丰富了C#接口的功能,使其能够更灵活地定义和复用代码。(注:代码中关于
MyMethod
的注释是一个小错误,应为Method
方法的注释。在实际应用中,请确保注释与代码一致,以避免混淆。)
cs
using System;
public interface Interface1
{
// 默认接口方法
void Method()
{
Console.WriteLine("接口的默认实现");
}
}
public class class1 : Interface1
{
public void Method()
{
Console.WriteLine("实现1");
}
}
public class class2 : Interface1
{
// 不覆盖MyMethod,将使用接口中的默认实现
}
class Program
{
static void Main(string[] args)
{
class1 a = new class1();
a.Method();
//接口名称可以像普通的类一样定义变量
//并且可以接受 实现接口的类的实例
Interface1 b = new class2();
b.Method();
Interface1 c = new class1();
c.Method();
//下面这行会在Method报错,因为class2中没有方法
//然而你如果给文心一言看这个报错,他会认为不会报错
//class2 d = new class2();
//d.Method();
}
}
输出结果:
cs
实现1
接口的默认实现
实现1