当一个接口实现一个接口时,这两个接口有相同方法时,可用new关键字隐藏父接口的方法,请以C#举以个范例
时间: 2024-10-28 17:07:28 浏览: 9
PHP使用静态方法的几个注意事项
在C#中,当一个接口继承另一个接口时,如果两个接口中有相同签名的方法,子接口可以通过使用 `new` 关键字来隐藏父接口的方法。这样做可以明确表示子接口提供了一个新的实现或版本,而不是重写父接口的方法。
下面是一个示例代码,展示了如何使用 `new` 关键字来隐藏父接口的方法:
```csharp
using System;
// 定义父接口 IParentInterface
public interface IParentInterface
{
void Display();
}
// 定义子接口 IChildInterface,继承自 IParentInterface
public interface IChildInterface : IParentInterface
{
// 使用 new 关键字隐藏父接口的 Display 方法
new void Display();
}
// 实现子接口的类
public class ChildClass : IChildInterface
{
// 实现子接口的 Display 方法
public void Display()
{
Console.WriteLine("This is the child interface's Display method.");
}
// 显式实现父接口的 Display 方法
void IParentInterface.Display()
{
Console.WriteLine("This is the parent interface's Display method.");
}
}
class Program
{
static void Main(string[] args)
{
IChildInterface child = new ChildClass();
child.Display(); // 调用子接口的 Display 方法
IParentInterface parent = (IParentInterface)child;
parent.Display(); // 调用父接口的 Display 方法
}
}
```
在这个示例中:
1. `IParentInterface` 定义了一个 `Display` 方法。
2. `IChildInterface` 继承了 `IParentInterface`,并使用 `new` 关键字重新定义了 `Display` 方法。
3. `ChildClass` 实现了 `IChildInterface`,并提供了 `Display` 方法的具体实现。同时,它还显式实现了 `IParentInterface` 的 `Display` 方法。
4. 在 `Main` 方法中,我们创建了一个 `ChildClass` 的实例,并通过 `IChildInterface` 和 `IParentInterface` 两种不同的方式调用 `Display` 方法。
运行这个程序将输出:
```
This is the child interface's Display method.
This is the parent interface's Display method.
```
这表明通过 `new` 关键字,我们可以在子接口中隐藏父接口的方法,并提供自己的实现。
阅读全文