.NET의 세 가지 인터페이스 구현 방법

巴扎黑
풀어 주다: 2016-12-20 17:19:48
원래의
2359명이 탐색했습니다.

일반적으로 .NET은 암시적 인터페이스 구현, 명시적 인터페이스 구현, 혼합 인터페이스 구현이라는 세 가지 인터페이스 구현 방법을 제공합니다. 이 세 가지 방법은 각각 고유한 특성을 가지고 있습니다.

우선 암시적 인터페이스 구현을 살펴보겠습니다. 암시적 인터페이스 구현은 .NET의 기본 인터페이스 구현 방법이기 때문에 아마도 우리가 가장 많이 사용하는 인터페이스 구현일 것입니다. 암시적 인터페이스 구현의 예를 살펴보겠습니다.

using System;
internal class MyClass
{
public void SomeMethod()
{
// Utilization Myinplement 선언 인터페이스를 사용하는 객체
IMyInterface iObj = new MyInplement();
iObj.MethodA();
// 클래스 메소드를 사용하여 Myinplement 객체 선언
MyInplement obj = new MyInplement() ;
obj.MethodB();
}
}
public class MyInplement : IMyInterface
{
#region IMyInterface Members
///


/// 암시적 인터페이스 구현을 사용하여 인터페이스
///

public void MethodA()
{
Console.WriteLine("a");
}///
/// 암시적 인터페이스 구현을 사용하여 인터페이스에서 메서드 구현
///

public void MethodB()
{
Console.WriteLine("B");
}
#endregion
}
공용 인터페이스 IMyInterface
{
void MethodA();
void MethodB();
}

위 코드는 매우 간단합니다. 인터페이스를 선언한 다음 MyImplement 클래스를 사용하여 인터페이스를 구현합니다. 인터페이스를 구현할 때 우리는 암시적 인터페이스 구현을 선택했습니다. 즉, public void MethodB()와 같이 구현 메서드의 서명을 정의하기 위해 인터페이스에 정의된 메서드 서명 앞에 수정자를 추가하는 것입니다. 이 암시적 인터페이스 구현은 사용이 매우 간단하지만 한 가지 단점은 고객이 인터페이스를 통하지 않고 구현 클래스에서 직접 메서드를 호출할 수 있다는 것입니다(즉, MyInplement obj = new MyInplement()를 통해 객체를 선언). 구현 클래스(즉, IMyInterface iObj = new MyInplement();를 통해 객체를 선언하는 것)는 의심할 여지 없이 코드 결합을 증가시키고 인터페이스 지향 프로그래밍의 원칙을 위반합니다. 그렇다면 고객이 구현 클래스를 직접 호출하지 못하도록 하려면 어떻게 해야 할까요? 아래에서 살펴보게 될 명시적인 인터페이스 구현만으로도 충분합니다.

명시적 인터페이스 구현은 구현 클래스가 인터페이스 메소드를 구현할 때 "인터페이스 이름. 메소드 이름" 스타일을 사용하여 메소드 시그니처에 메소드 이름을 정의하는 것을 의미합니다. 명시적 인터페이스에 의해 구현된 모든 메서드는 비공개이므로 Modifier를 가질 수 없습니다. 이는 고객이 구현 클래스를 직접 호출하는 것을 방지하기 위한 .NET의 엄격한 요구 사항입니다. 명시적인 인터페이스 구현의 예를 살펴보겠습니다.

using System;

internal class MyClass
{
public void SomeMethod()
{
// 인터페이스 사용 선언
IMyInterface iObj = new MyInplement();
iObj.MethodA();
// MyImplement의 MethodA 메서드가 비공개이기 때문에 클래스 메서드를 사용하여 Myinplement 개체를 선언하면 오류가 보고됩니다.
MyInplement obj = new MyInplement();
obj.MethodB();
}
}
public class MyInplement : IMyInterface
{
#region IMyInterface Members
// /


/// 명시적 인터페이스 구현을 사용하여 인터페이스에서 메서드를 구현합니다
///

void IMyInterface.MethodA()
{
Console. WriteLine("a");
}
///
/// 명시적인 인터페이스 구현을 사용하여 인터페이스에 메서드를 구현합니다
/// 오류가 보고되기 때문입니다. 명시적 인터페이스 구현에서는 수정자가 허용되지 않습니다.
///

public void IMyInterface.MethodB()
{
Console.WriteLine("B")
}
#endregion
}
공용 인터페이스 IMyInterface
{
void MethodA();
void MethodB();
}

위에는 두 곳이 있습니다. 오류가 보고될 코드입니다. 이는 오류가 보고된 명시적 인터페이스 구현의 제약 조건을 위반했기 때문입니다.

마지막으로 하이브리드 인터페이스 구현을 살펴보겠습니다. 하이브리드 인터페이스 구현은 암시적 인터페이스 구현과 명시적 인터페이스 구현을 함께 사용하는 것입니다.

내부 클래스를 사용합니다. MyClass

{
public void SomeMethod()
{
// 인터페이스를 사용하여 Myinplement 개체 선언
IMyInterface iObj = new MyInplement();
iObj.MethodA(); }
}
public class MyInplement : IMyInterface
{
#region IMyInterface Members
///


/// 명시적인 인터페이스 구현 메서드를 사용하여 메서드를 구현합니다. 인터페이스
///

void IMyInterface.MethodA()
{
Console.WriteLine("a");
}
/// < ;summary>
/// 암시적 인터페이스 구현을 사용하여 인터페이스에서 메서드 구현
///
public void MethodB()
{
Console.WriteLine(" B");
}
#endregion
}
공용 인터페이스 IMyInterface
{
void MethodA();
void MethodB();
}

위 코드에서는 MehtodB 구현을 암시적 인터페이스 구현으로 변경하여 MyImplement.Method 수정자가 공개되고 코드에 오류가 없도록 했습니다.


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿