다음 편집기에서는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!