final 키워드

final

// 클래스에 final 키워드
// 상속될 수 없음
class A final
{
  public:
    A();
    virtual ~A();
    virtual void Func(string InParam);
};

// Error!!
class B : public A
{
  public:
    B();
    ~B();
    void Func(string InParam) override;
};

class C
{
	C();

  // 함수에 final 키워드
  // 상속될 수 없음
   virtual void Func(string InParam) final; 
};

class D : public C
{
	D();

  // Error!!!
  void Func(string InParam) override; 
};

// - A는 final로 선언되었기 때문에 상속 불가
// - C의 Func 멤버 함수는 final로 선언되었기 때문에 D에서 overriding이 불가능
  • 더 이상의 상속을 차단하는 키워드
    • 클래스, 메서드에 사용 가능
    • 비가상 메서드에는 사용할 수 없음
  • C#의 sealed와 유사

출처

Categories: ,

Updated: