> 백엔드 개발 > C#.Net 튜토리얼 > C#에서 인터페이스는 어떻게 작동하나요?

C#에서 인터페이스는 어떻게 작동하나요?

WBOY
풀어 주다: 2023-08-28 22:21:06
앞으로
604명이 탐색했습니다.

C# 中的接口如何工作?

인터페이스는 클래스나 구조에 의해 구현될 계약을 정의합니다. 여기에는 메서드, 속성, 이벤트 및 인덱서가 포함될 수 있습니다. 인터페이스는 데이터를 보유하지 않고 수행할 수 있는 동작(더 정확하게는 인터페이스를 구현하는 클래스가 수행할 수 있는 동작)만 지정한다는 점을 제외하면 클래스와 유사합니다.

클래스는 동작이나 더 많은 인터페이스를 구현할 수 있습니다. 인터페이스 멤버를 구현하려면 클래스에 인터페이스 멤버와 동일한 메서드 정의, 즉 동일한 이름과 서명을 가진 공용 멤버가 있어야 합니다.

예를 들어 IComparer는 두 개체를 비교하는 메서드에 대한 계약을 정의하는 System.Collections 네임스페이스에 정의된 인터페이스입니다. Car 클래스는 IComparer 인터페이스를 구현합니다.

public interface IDriver{
   void Drive();
}
public class Car : IDriver{
   public string Name { get; set; }

   public int Speed { get; set; }
   public void Drive(){
      Console.WriteLine($"{Name}: {Speed}");
   }
}
로그인 후 복사

인터페이스의 모든 멤버는 암시적으로 추상적이며 구현 세부 정보가 없습니다. 모든 인터페이스 멤버는 공개됩니다. 액세스 한정자는 인터페이스 멤버와 함께 사용할 수 없습니다. 인터페이스를 구현하는 클래스는 인터페이스를 구현하는 공용 메서드를 제공해야 합니다.

인터페이스는 다른 인터페이스를 확장할 수 있습니다. 예:

public interface IPerformer { void Perform(); }
public interface ISinger : IPerformer{
   void Sing();
}
로그인 후 복사

인터페이스를 사용하면 단일 클래스에 여러 소스의 동작을 포함할 수 있습니다. C#에서는 C++처럼 다중 상속을 허용하지 않으므로 인터페이스는 C#에서 다중 상속을 구현하는 방법입니다.

인터페이스의 한 가지 단점은 인터페이스를 사용하여 API를 노출할 때 클래스보다 유연성이 떨어진다는 것입니다. 인터페이스 계약을 변경하면 인터페이스를 구현하는 모든 클래스가 중단되므로 인터페이스를 구현하기 위해 업데이트해야 합니다.

실시간 시연

using System;
class Program{
   static void Main(){
      var carOne = new Car { Name = "Honda", Speed = 100 };
      var carTwo = new Car { Name = "Toyota", Speed = 70 };
      carOne.Drive();
      carTwo.Drive();
   }
}
public interface IDriver{
   void Drive();
}
public class Car : IDriver{
   public string Name { get; set; }
   public int Speed { get; set; }
   public void Drive(){
      Console.WriteLine($"{Name}: {Speed}");
   }
}
로그인 후 복사

출력

Honda: 100
Toyota: 70
로그인 후 복사

위 내용은 C#에서 인터페이스는 어떻게 작동하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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