산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C# 봉인된 클래스 및 메서드

C# 봉인된 클래스 및 메서드

이 자습서에서는 예제를 통해 C#의 봉인된 클래스와 메서드에 대해 알아봅니다.

봉인된 클래스

C#에서 클래스가 다른 클래스에 상속되는 것을 원하지 않을 때 클래스를 봉인된 클래스로 선언할 수 있습니다. .

봉인된 클래스는 파생 클래스를 가질 수 없습니다. sealed을 사용합니다. 봉인된 클래스를 만드는 키워드입니다. 예를 들어,

using System;
namespace SealedClass {
  sealed class Animal {
    
  }

  // trying to inherit sealed class
  // Error Code
  class Dog : Animal {
    
  }   

  class Program  {
    static void Main (string [] args) {

      // create an object of Dog class
      Dog d1 = new Dog();  
      Console.ReadLine();
    }
  }
}

위의 예에서는 봉인된 클래스 Animal을 만들었습니다. . 여기서는 Dog를 파생시키려고 합니다. 동물의 클래스 수업.

봉인된 클래스는 상속할 수 없으므로 프로그램에서 다음 오류를 생성합니다.

error CS0509: 'Dog': cannot derive from sealed type 'Animal'
<시간>

밀폐 방법

메서드 재정의 중에 재정의된 메서드가 다른 클래스에 의해 더 이상 재정의되지 않도록 하려면 이를 봉인된 메서드로 선언할 수 있습니다. .

sealed을 사용합니다. 키워드를 재정의된 메서드와 함께 사용하여 봉인된 메서드를 만듭니다. 예를 들어,

using System;
namespace SealedClass {

  class Animal {
    public virtual void makeSound() {
    Console.WriteLine("Animal Sound");
    }
  }

  class Dog : Animal {

    // sealed method
    sealed public override void makeSound() {

      Console.WriteLine("Dog Sound");
    }
  }

  class Puppy : Dog {

    // trying to override sealed method
    public override void makeSound() {
      Console.WriteLine("Puppy Sound");
    }
  }   

  class Program  {
    static void Main (string [] args) {
      
      // create an object of Puppy class
      Puppy d1 = new Puppy();  
      Console.ReadLine();
    }
  }
}

위의 예에서는 makeSound()를 재정의했습니다. Dog 내부의 메소드 수업.

// Inside the Dog class
sealed public override void makeSound() {
  Console.WriteLine("Dog Sound");
}

sealed을 사용했습니다. makeSound()가 있는 키워드 . 이것은 강아지를 의미합니다. Dog를 상속하는 클래스 클래스는 makeSound()를 재정의할 수 없습니다. .

따라서 오류가 발생합니다.

error CS0239: 'Puppy.makeSound()': cannot override inherited member 'Dog.makeSound()' because it is sealed

makeSound()를 추가로 재정의하려고 할 때 Puppy 내부의 메소드 수업.

참고 :재정의된 메서드를 봉인하면 다단계 상속에서 메서드 재정의를 방지할 수 있습니다.

<시간>

밀봉된 수업이 필요한 이유

1. 상속을 방지하기 위해 봉인된 클래스를 사용합니다. 봉인된 클래스에서 상속받을 수 없기 때문에 봉인된 클래스의 메서드는 다른 클래스에서 조작할 수 없습니다.

보안 문제를 방지하는 데 도움이 됩니다. 예를 들어,

sealed class A { 
  ...
}

// error code
class B : A {
  ...
}

A 클래스로 상속할 수 없음, 클래스 B A 클래스의 메서드를 재정의하고 조작할 수 없습니다. .

2. 봉인된 클래스의 가장 좋은 용도 중 하나는 정적 멤버가 있는 클래스가 있는 경우입니다.

System.Drawing 클래스 네임스페이스는 봉인된 클래스의 예 중 하나입니다. 클래스에는 표준 색상으로 펜을 나타내는 정적 멤버가 있습니다. Pens.Blue 파란색 펜을 나타냅니다.


C 언어

  1. C# 클래스 및 개체
  2. C# 추상 클래스 및 메서드
  3. C# 부분 클래스 및 부분 메서드
  4. C++ 클래스 및 개체
  5. C++ friend 함수 및 friend 클래스
  6. 자바 - 객체와 클래스
  7. C# - 상속
  8. C# - 다형성
  9. ASTM A729 클래스 A 이중 정규화 및 강화
  10. ASTM A649 클래스 2 정규화 및 강화