예를 들어 C#의 인터페이스란 무엇입니까?

⚡ 스마트 요약

C#의 인터페이스는 con을 정의합니다.trac클래스가 구현해야 하는 메서드와 속성을 지정하는 것으로, 실제 코드는 제공하지 않습니다. 구현 클래스는 구체적인 동작을 제공하므로, 서로 관련 없는 유형 간에도 느슨한 결합과 다중 상속이 가능합니다.

  • 🔗 와tract: 인터페이스는 구현하는 모든 클래스가 정의해야 하는 메서드 및 속성 시그니처를 선언합니다.
  • 구현 없음: 인터페이스는 선언만 담고 있으므로 실제 메서드 코드는 클래스에서 작성합니다.
  • 🔑 예어: interface 키워드는 타입을 생성하고, 클래스는 콜론을 사용하여 해당 타입을 구현합니다.
  • 🔀 다양한 인터페이스: 하나의 클래스가 여러 인터페이스를 구현할 수 있으므로 C#에서는 다중 상속과 같은 기능을 제공합니다.
  • 인터페이스 vs abstract 클래스: 인터페이스는 동작만 정의하는 반면, abs는trac클래스는 공유 상태와 코드를 보유할 수도 있습니다.
  • 🤖 AI 지원: GitHub Copilot은 인터페이스와 구현체를 구성하며, ML.NET 파이프라인은 인터페이스 기반 변환기에 의존합니다.tracTS.

C# 인터페이스

C#의 인터페이스란 무엇입니까?

An 인터페이스 C#에서 `con`은 클래스와 함께 사용되어 연결을 정의합니다.trac인터페이스는 클래스가 애플리케이션에 무엇을 제공할지에 대한 합의입니다. 인터페이스는 클래스가 수행할 수 있는 연산을 정의합니다. 인터페이스는 속성과 메서드를 선언합니다. 메서드가 정확히 무엇을 할지는 클래스의 몫입니다.

콘솔 애플리케이션에서 클래스를 변경하여 인터페이스의 예를 살펴보겠습니다. 인터페이스를 사용하여 실행할 수 있는 것이 없기 때문에 코드를 실행하지 않을 것입니다.

C# 인터페이스 예

인터페이스 클래스를 만들어 봅시다. 클래스 이름은 "Guru99Interface." 그러면 우리의 메인 클래스는 정의된 인터페이스를 확장하게 됩니다. 모든 코드는 Program.cs 파일에 작성해야 합니다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 interface IGuru99Interface
 {
  void SetTutorial(int pID, string pName);
  String GetTutorial();
 }

 class Guru99Tutorial : IGuru99Interface
 {
  protected int TutorialID;
  protected string TutorialName;

  public void SetTutorial(int pID, string pName)
  {
   TutorialID = pID;
   TutorialName = pName;
  }

  public String GetTutorial()
  {
   return TutorialName;
  }

  static void Main(string[] args)
  {
   Guru99Tutorial pTutor = new Guru99Tutorial();

   pTutor.SetTutorial(1,".Net by Guru99");

   Console.WriteLine(pTutor.GetTutorial());

   Console.ReadKey();
  }
 }
}

Code 설명:-

여기서는 코드의 중요한 부분을 설명합니다.

C# 인터페이스 예

  1. 먼저 “라는 인터페이스를 정의합니다.Guru99인터페이스." 여기서 "인터페이스"라는 키워드는 인터페이스를 정의하는 데 사용됩니다.
  2. 다음으로, 우리는 인터페이스에서 사용될 메소드를 정의합니다. 이 경우, 우리는 이전의 모든 예제에서 사용된 것과 동일한 메소드를 정의합니다. 인터페이스는 메소드를 선언할 뿐이라는 점에 유의하세요. 그것은 그 안의 코드를 정의하지 않습니다.
  3. 그런 다음 우리는 우리의 것을 만듭니다. Guru99Tutorial 클래스는 인터페이스를 확장합니다. 여기에 인터페이스에 선언된 다양한 메서드를 정의하는 코드를 작성합니다. 이러한 코딩 방식은 다음과 같은 결과를 가져옵니다.
    • 이는 수업이 제대로 진행되도록 보장합니다. Guru99Tutorial은 "SetTutorial" 및 "GetTutorial" 메서드에 필요한 코드만 추가하고 그 외에는 아무것도 추가하지 않습니다.
    • 또한 인터페이스가 사기처럼 작동하도록 보장합니다.tract. 그 수업 계약을 준수해야 합니다tract. 그래서 만약 그 con이trac해당 코드에 "SetTutorial"과 "GetTutorial"이라는 두 가지 메서드가 있어야 한다고 명시되어 있다면, 그렇게 되어야 합니다.

C# 인터페이스 vs. 절대값trac티 클래스

초보자들이 흔히 묻는 질문 중 하나는 C# 인터페이스가 기존 인터페이스와 어떻게 다른가 하는 것입니다. ABStract 클래스둘 다 단점을 정의합니다.trac다른 유형들도 있지만, 각각 다른 설계 목표를 가지고 있습니다.

주요 차이점은 다음과 같습니다.

  • 구현 : 인터페이스는 선언만 포함하는 반면, 절대값은 선언만 포함합니다.tract 클래스는 abs를 모두 제공할 수 있습니다.tract 멤버와 완벽하게 구현된 메서드.
  • 다중 상속: 클래스는 여러 인터페이스를 구현할 수 있지만, 하나의 절대 클래스만 상속받을 수 있습니다.tract 클래스.
  • 상태: 복근trac클래스는 필드, 생성자 및 데이터를 포함하는 속성을 가질 수 있지만 인터페이스는 인스턴스 상태를 저장할 수 없습니다.
  • 접근 제한자: ABStrac클래스 멤버는 public, protected 또는 private일 수 있지만, 기존 인터페이스 멤버는 암묵적으로 public입니다.
  • 사용 사례 : 서로 관련 없는 유형에 걸쳐 기능을 추가하기 위해 인터페이스를 사용하고, 절대적인tract 클래스는 밀접하게 관련된 유형 간에 공통 코드를 공유하기 위한 것입니다.

간단히 말해, 인터페이스는 클래스가 무엇을 할 수 있는지를 설명하는 반면, 절대적인 것은 클래스가 무엇을 할 수 있는지를 설명합니다.tract 클래스는 또한 그 과정이 어떻게 진행되는지 일부를 정의할 수도 있습니다.

C#에서 여러 인터페이스를 구현하는 방법

클래스 상속과 달리 C#에서는 하나의 클래스가 여러 인터페이스를 구현할 수 있습니다. 이러한 특징 덕분에 C#은 여러 기본 클래스를 동시에 상속할 때 발생하는 모호함 없이 안전한 다중 상속 방식을 제공합니다.

여러 인터페이스를 구현하려면 클래스 이름 뒤에 인터페이스들을 나열하고 쉼표로 구분합니다. 그런 다음 클래스는 구현하는 각 인터페이스에 선언된 모든 메서드를 정의해야 합니다.

단계 1) 각각 고유한 메서드를 가진 두 개의 인터페이스를 선언하십시오.

단계 2) 두 인터페이스를 모두 구현하는 클래스를 생성하고, 인터페이스 이름은 쉼표로 구분하세요.

단계 3) 각 인터페이스에 선언된 모든 멤버에 대해 메서드 본문을 제공하십시오.

아래 예시는 I 인터페이스를 구현하는 Document 클래스를 보여줍니다.Readable 그리고 IWritable 인터페이스를 제공합니다.

using System;
namespace DemoApplication
{
 interface IReadable
 {
  void Read();
 }
 interface IWritable
 {
  void Write();
 }
 class Document : IReadable, IWritable
 {
  public void Read()
  {
   Console.WriteLine("Reading the document");
  }
  public void Write()
  {
   Console.WriteLine("Writing to the document");
  }
  static void Main(string[] args)
  {
   Document doc = new Document();
   doc.Read();
   doc.Write();
   Console.ReadKey();
  }
 }
}

Code 설명:-

  1. 우리는 두 개의 인터페이스를 선언합니다. IReadable 그리고 IWritable 인터페이스가 있습니다. 각 인터페이스는 본문이 없는 단일 메서드를 선언합니다.
  2. Document 클래스는 콜론 뒤에 쉼표로 구분하여 두 인터페이스를 모두 나열하므로 두 인터페이스 모두를 준수하는 데 동의하는 것입니다.tracTS.
  3. 그다음 클래스는 Read 및 Write 메서드를 정의합니다. 건너뛰기ping 두 방법 모두 컴파일 오류를 발생시킬 것입니다.
  4. Main 메서드는 Document 객체를 생성하고 두 메서드를 모두 호출하여 해당 클래스가 두 인터페이스를 만족함을 증명합니다.

프로그램이 실행되면 출력됩니다. 문서를 읽다 첫 번째 줄에 그리고 문서에 쓰기 두 번째 줄에 있습니다. 이 패턴은 각 조건을 유지합니다.trac작고 집중적인 구조 덕분에 Document 클래스는 테스트 및 확장이 더 쉽습니다.

C#에서 인터페이스를 사용하는 장점

인터페이스는 코드를 유연하게 만들고 유지 관리를 용이하게 해주기 때문에 전문적인 C# 프로젝트에서 널리 사용됩니다. 인터페이스를 사용하면 일관된 방식으로 프로그래밍할 수 있습니다.trac구체적인 계급이라기보다는.

주요 장점은 다음과 같습니다.

  • 느슨한 결합: Code 특정 클래스가 아닌 인터페이스에 의존하므로 구현이 변경되더라도 호출하는 부분이 손상되지 않습니다.
  • 다중 상속: 클래스는 여러 인터페이스로부터 동작을 상속받을 수 있는데, 이는 일반적인 클래스 상속에서는 불가능한 일입니다.
  • 테스트 가능성: 인터페이스를 사용하면 단위 테스트 중에 실제 클래스를 모의 객체로 쉽게 교체할 수 있습니다.
  • 의존성 주입: 프레임워크는 런타임에 인터페이스 구현체를 주입하는데, 이는 SOLID 원칙의 핵심 개념입니다.
  • 일관성 : 모든 구현 클래스는 동일한 멤버 집합을 제공해야 하므로 API의 예측 가능성이 유지됩니다.

이러한 이점 때문에 인터페이스는 대부분의 최신 C# 디자인 패턴 및 애플리케이션 프레임워크의 핵심에 자리 잡고 있습니다.

자주 묻는 질문

관례적으로 C# 인터페이스 이름은 IDisposable이나 I처럼 대문자 I로 시작합니다.Readable'I'라는 접두사는 해당 타입이 클래스나 구조체가 아닌 인터페이스임을 즉시 나타냅니다.

C# 8.0 이전에는 인터페이스에 선언만 포함되었습니다. C# 8.0부터는 기본 인터페이스 메서드에서 인터페이스가 메서드 본문을 제공할 수 있게 되어, 새로운 멤버가 추가되더라도 기존 구현이 계속 작동합니다.

명시적 구현은 인터페이스 접두사(예: I)를 사용하여 멤버 이름을 지정합니다.Readable.읽기. 그러면 해당 멤버는 인터페이스 참조를 통해서만 호출할 수 있으므로 두 인터페이스가 동일한 메서드를 선언할 때 이름 충돌을 방지할 수 있습니다.

예. 인터페이스는 하나 이상의 다른 인터페이스를 상속받을 수 있습니다. 자식 인터페이스를 구현하는 클래스는 자식 인터페이스와 상속받은 모든 부모 인터페이스의 모든 메서드를 정의해야 합니다.

아니요. 인터페이스는 구현체가 없기 때문에 직접 인스턴스를 생성할 수 없습니다. 인터페이스를 구현하는 클래스의 객체를 생성한 다음, 인터페이스 타입을 통해 해당 객체를 참조해야 합니다.

예. 일반 인터페이스의 멤버는 암묵적으로 public이며, 접근 제한자를 추가할 수 없습니다. 인터페이스를 구현하는 클래스 또한 해당 멤버를 public으로 선언해야 합니다.

네. GitHub Copilot은 간단한 주석이나 인터페이스 이름만으로 인터페이스를 구성하고, 메서드 시그니처를 제안하며, 해당 인터페이스를 구현하는 클래스를 생성할 수 있어 개발 속도를 높여줍니다.tract-우선 개발.

ML.NET은 머신 러닝 파이프라인을 정의하기 위해 ITransformer 및 IDataView와 같은 인터페이스에 의존합니다. 이러한 인터페이스를 사용하여 코딩하는 것은...tracts를 사용하면 주변 학습 코드를 다시 작성하지 않고도 모델과 데이터 소스를 교체할 수 있습니다.

이 게시물을 요약하면 다음과 같습니다.