Latest web development tutorials

C #을 다형성

다형성은 여러 형태가 있다는 것을 의미한다.객체 지향 프로그래밍 패러다임 다형성 종종 표현은 "하나의 인터페이스, 다중 기능한다."

다형성은 정적 또는 동적 일 수있다. 응답 기능의정적 다형성은 컴파일시에 발생합니다.동적 다형성 응답 함수 실행시에 발생한다.

정적 다형성

컴파일시에, 연결기구의 기능과 객체는 정적 바인딩으로 알려진 초기 바인딩이라고합니다. C #을 정적 다형성을 구현하는 두 가지 기술을 제공합니다. 그들은 :

  • 함수 오버로딩
  • 연산자 오버로딩

오버로드는 다음 섹션에서 논의 할 것이다 운영자, 우리는 다음 함수 오버로딩에 대해 설명합니다.

함수 오버로딩

동일한 기능의 이름이 여러 정의가에 대해 동일한 범위에있을 수 있습니다. 서로가 매개 변수 목록의 매개 변수 유형이 될 수에서 정의 된 함수는 다른 매개 변수의 숫자가 될 수 달라야합니다. 당신은 함수 선언의 반환 형식 만 오버로드 할 수 없습니다.

다음의 예는 서로 다른 형태의 데이터를 인쇄하기위해, 동일한 기능 전단 ()의몇 가지 보여

시스템을 이용하여;
네임 스페이스 PolymorphismApplication
{
   클래스 Printdata
   {
      무효 인쇄 (INT의 난)
      {
         Console.WriteLine ( "인쇄 INT : {0}", 나는);
      }

      무효 인쇄 (더블 F)
      {
         Console.WriteLine ( "인쇄 플로트 : {0}", F);
      }

      무효 인쇄 (문자열들)
      {
         Console.WriteLine ( "인쇄 문자열 : {0}",들);
      }
      정적 무효 메인 (문자열 []에 인수)
      {
         Printdata P = 새로운 Printdata ();
         // 정수 p.print를 인쇄하려면 인쇄를 호출 (5);
         // 부동 소수점 p.print을 인쇄 (500.263)에 인쇄를 호출;
         // 호출 인쇄 문자열 p.print ( "안녕하세요 C ++")로 인쇄;
         Console.ReadKey ();
      }
   }
}

상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를

인쇄 INT : 5
인쇄 플로트 : 500.263
인쇄 문자열 : 안녕하세요 C ++

동적 다형성

C #은 추상 클래스, 인터페이스 구현 클래스의 일부를 제공 만들 키워드추상를 사용할 수 있습니다.파생 클래스는 추상 클래스에서 상속이 완료되면 달성했다.추상 클래스는 추상 메소드는 추상 메소드는 파생 클래스로 구현 할 수 있습니다 포함되어 있습니다.파생 클래스는보다 전문적인 기능을 가지고 있습니다.

다음은 추상 클래스에 대한 몇 가지 규칙이 있습니다 :

  • 당신은 추상 클래스의 인스턴스를 만들 수 없습니다.
  • 당신은 추상 클래스 외부의 추상 메소드를 선언 할 수 없습니다.
  • 밀봉 클래스 정의 키워드 앞에 배치함으로써클래스밀봉 클래스로선언 할수있다.클래스밀봉 선언하면 상속 될 수 없다.밀봉으로 추상 클래스는 선언 할 수 없습니다.

다음 프로그램은 추상 클래스를 보여줍니다

시스템을 이용하여;
네임 스페이스 PolymorphismApplication
{
   추상 클래스 모양
   {
      공공 추상적 인 INT 지역 ();
   }
   클래스 사각형 : 모양
   {
      개인 INT 길이;
      개인 INT 폭;
      공개 직사각형 (INT를 A = 0, B = 0 INT)
      {
         길이는 =;
         폭 = B를;
      }
      공공 재정의 INT 지역 ()
      { 
         Console.WriteLine ( "사각형 클래스 영역 :");
         리턴 (폭 * 길이); 
      }
   }

   클래스 RectangleTester
   {
      정적 무효 메인 (문자열 []에 인수)
      {
         사각형 R = 새로운 Rectangle (10, 7);
         더블 A = r.area ();
         Console.WriteLine ( "크기 : {0}", a);
         Console.ReadKey ();
      }
   }
}

상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를

사각형 클래스 크기 :
지역 : 70

함수가 파생 클래스에서 구현되는 클래스의 요구에 정의되면, 당신은가상 방법을 사용할 수 있습니다.가상 방법은 키워드가상을 사용하여 선언됩니다.가상 방법은 다른 상속 클래스에서 다르게 구현 될 수있다. 가상 메소드 호출은 런타임에 발생합니다.

동적 다형성추상 클래스와 가상 방법을통해달성된다.

다음 프로그램은이 점을 보여줍니다

시스템을 이용하여;
네임 스페이스 PolymorphismApplication
{
   클래스 모양 
   {
      보호 INT의 폭, 높이;
      공개 형상 (INT를 A = 0, B = 0 INT)
      {
         폭 = A;
         높이 = B;
      }
      public 가상 INT 지역 ()
      {
         Console.WriteLine ( "부모 면적 :");
         0을 반환;
      }
   }
   클래스 사각형 : 모양
   {
      공개 직사각형 (INT를 A = 0, B = 0 INT) : 기재 (a, b)
      {

      }
      공공 재정의 INT 지역 ()
      {
         Console.WriteLine ( "사각형 클래스 영역 :");
         반환 (폭 * 높이); 
      }
   }
   클래스 삼각형 : 모양
   {
      공개 삼각형 (INT를 A = 0, B = 0 INT) : 기재 (a, b)
      {
      
      }
      공공 재정의 INT 지역 ()
      {
         Console.WriteLine ( "삼각형 클래스 영역 :");
         반환 (폭 * 높이 / 2); 
      }
   }
   클래스 발신자
   {
      공공 무효 CallArea (모양 쉬)
      {
         을 int로;
         A = sh.area ();
         Console.WriteLine ( "크기 : {0}", a);
      }
   }  
   클래스 테스터
   {
      
      정적 무효 메인 (문자열 []에 인수)
      {
         발신자 C = 새 발신자 ();
         사각형 R = 새로운 Rectangle (10, 7);
         삼각형 t = 새로운 삼각 (10, 5);
         c.CallArea (R);
         c.CallArea (t);
         Console.ReadKey ();
      }
   }
}

상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를

사각형 클래스 크기 :
지역 : 70
클래스 삼각형 면적 :
지역 : 25