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: