>  기사  >  백엔드 개발  >  C#에서 인터페이스 개체를 인스턴스화하는 방법에 대한 자세한 소개

C#에서 인터페이스 개체를 인스턴스화하는 방법에 대한 자세한 소개

黄舟
黄舟원래의
2017-03-21 11:32:532203검색

다음 편집기에서는 C# 인터페이스 개체 인스턴스화 방법에 대한 기사를 제공합니다. 편집자님이 꽤 좋다고 생각하셔서 지금 공유하고 모두에게 참고용으로 드리고자 합니다. 에디터를 따라 살펴보겠습니다

헤드 퍼스트 디자인 패턴에는 수많은 인터페이스 객체가 사용됩니다

먼저 문제를 명확히하자면, 인터페이스는 객체를 선언할 수 있을 뿐만 아니라, 또한 객체를 인스턴스화하고 매개변수로 전달할 수도 있습니다.

1. 인터페이스 콜백

이것은 상속의 상향 변환입니다. 상위 클래스 FL=new subclass(); 그러나 여기서 상위 클래스는 인터페이스 인터페이스입니다. (개인적으로는 클래스를 오버라이드하든 인터페이스를 다시 작성하든 사용법은 같다고 생각합니다)

특정 인터페이스를 구현하는 클래스에서 생성한 객체의 참조를 다음에서 선언한 인터페이스 변수에 할당할 수 있습니다. 그러면 인터페이스 변수는 클래스에 의해 구현된 인터페이스의 메서드를 호출할 수 있습니다. 실제로 인터페이스 변수는 클래스가 구현한 인터페이스의 메소드를 호출할 때 해당 객체에게 해당 인터페이스 메소드

를 코드 에 직접 호출하라고 알려준다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
  interface Itemp
  {
    double plus();
  }
  public class num : Itemp
  {
    double aa, bb;
    public num(double a, double b)
    {
      this.bb = b;
      this.aa = a;
    }
    public double plus()
    {
      return (aa * bb);
    }
  }
  class Program
  {
    static void Main(string[] args)
    {
      num n = null;//声明类对象引用
      Itemp tm = null;//声明接口对象引用
      tm = new num(1.1, 2.2);//接口回调(向上转型)
      Console.WriteLine(tm.plus());
      Console.ReadKey();
    }
  }
}

위의 예를 통해 인터페이스 객체의 인스턴스화는 실제로 해당 메소드를 구현하는 클래스의 모든 메소드를 가리키는 참조로서의 인터페이스 객체임을 쉽게 알 수 있습니다. 함수 포인터(C#의 대리자와 유사)에 차이가 있습니다. C#의 인터페이스 개체 인스턴스화는 실제로 일대다인 반면 C++의 함수 포인터는 일대일입니다.

그러나 인터페이스 객체의 인스턴스화는 이를 구현하는 클래스로 인스턴스화되어야 하며 인터페이스 자체로는 인스턴스화될 수 없다는 점에 유의해야 합니다. C#에서는 인터페이스 자체를 사용하여 자체 개체를 인스턴스화하는 것이 허용되지 않습니다.

위 내용은 C#에서 인터페이스 개체를 인스턴스화하는 방법에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.