08. baseํ‚ค์›Œ๋“œ์™€ sealedํ•œ์ •์ž

2022. 4. 6. 09:21ยท๐Ÿ’ป Programming Language/C#
namespace inheritEx2
{
    // ๊ธฐ๋ฐ˜(๋ถ€๋ชจ) ํด๋ž˜์Šค์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ์ƒ์„ฑ์ž์—๊ฒŒ
    // ํŒŒ์ƒ(์ž์‹) ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž์—์„œ ์ธ์ž๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•

    /*
     C# ์—์„œ๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค ์ƒ์„ฑ์ž ์ค‘์—์„œ ์‚ฌ์šฉ์ž ์ง€์ • ์ƒ์„ฑ์ž(๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ์ƒ์„ฑ์ž)๊ฐ€
    ์กด์žฌ ํ•  ๋•Œ ๋ถ€๋ชจ ํด๋ž˜์Šค ์ƒ์„ฑ์ž์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ (Ex. ๋งค๊ฐœ๋ณ€์ˆ˜ = p) ๋ฅผ ์ž์‹ํด๋ž˜์Šค์—์„œ ์ „๋‹ฌํ•˜์—ฌ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 
     ์ฆ‰, ์ž์‹ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค(๋ถ€๋ชจํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๊ณ  ์žˆ๋Š”๊ฒฝ์šฐ)๋ฅผ ์ƒ์„ฑํ• ๋•Œ ๋ถ€๋ชจํด๋ž˜์Šค์— ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ์ดˆ๊ธฐํ™” ํ•  ์ˆ˜ ์žˆ์Œ.
     cf) Java? Python์ธ๊ฐ€? ๊ฑฐ๊ธฐ์„œ ๋ดค๋˜ super() ๊ฐ™์€ ๊ฒƒ์ธ๋“ฏํ•จ.
     */

    /* sealed */ class Parent 
        // ์ด์™€ ๊ฐ™์ด `sealed` ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•˜๋ฉด 
        // ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ ์ƒ์†์„ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.
        // ์ด๋ ‡๊ฒŒ sealed๋ฅผ ํด๋ž˜์Šค์— ์ด์šฉํ•˜๋ฉด ๋ด‰์ธํ•œ๋‹ค ๋ผ๊ณ  ํ•œ๋‹ค.
    {
        protected string name;
        public Parent(string name)
        {
            this.name = name;
            Console.WriteLine($"{this.name}.Parent()");
        }

        public void parent_method()
        {
            Console.WriteLine("parent method");
        }
    }

    class Child : Parent
    {
        public Child(string name) : base(name) 
            // base๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค์— ์ ‘๊ทผํ•  ๋•Œ ์‚ฌ์šฉ
        {   // ์ด๋ ‡๊ฒŒ ์„ ์–ธํ•˜๋ฉด Child(name)์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ name์„ ๋ถ€๋ชจ์˜ ์ƒ์„ฑ์ž๋กœ ์ „๋‹ฌํ•˜๋ฉฐ ํ˜ธ์ถœํ•œ๊ฒƒ
            Console.WriteLine($"{this.name}.Child()");
        }

        // base ํ‚ค์›Œ๋“œ๋Š” ๊ธฐ๋ฐ˜ ํด๋ž˜์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํ‚ค์›Œ๋“œ์ด๋‹ค.
        //๋”ฐ๋ผ์„œ, ๊ธฐ๋ฐ˜ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„๋ฅผ ์ ‘๊ทผํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

        public void child_method()
        {
            Console.WriteLine("child method");
            base.parent_method(); 
            //base ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•ด ๋ถ€๋ชจํด๋ž˜์Šค์˜ ๋ฉ”์†Œ๋“œ๋„ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Child child = new Child("์•„์ด");
            child.child_method();
        }
    }
}
Output

์•„์ด.Parent()
์•„์ด.Child()
child method
parent method

  • base : ๊ธฐ๋ฐ˜(๋ถ€๋ชจ)ํด๋ž˜์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํ‚ค์›Œ๋“œ์ด๋‹ค. base ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ๊ธฐ๋ฐ˜ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„(ํ•„๋“œ ํ˜น์€ ๋ฉ”์†Œ๋“œ)๋ฅผ ์ ‘๊ทผํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฝ”๋“œ ์ฐธ๊ณ ํ•  ๊ฒƒ!

  • sealed : ๊ธฐ๋ฐ˜(๋ถ€๋ชจ)ํด๋ž˜์Šค์— ์‚ฌ์šฉํ•˜๋Š” ํ‚ค์›Œ๋“œ๋กœ ์ด๋ฅผ ํ†ตํ•ด ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ ํด๋ž˜์Šค์˜ ์ƒ์†์„ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค. sealed ํ‚ค์›Œ๋“œ๋ฅผ ํด๋ž˜์Šค์— ์ด์šฉํ•˜์—ฌ ๋ด‰์ธํ•œ๋‹ค ๋ผ๊ณ  ์ผ์ปซ๋Š”๋‹ค.

  • ๊ธฐ๋ฐ˜(๋ถ€๋ชจ)ํด๋ž˜์Šค์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ์ƒ์„ฑ์ž์—๊ฒŒ ํŒŒ์ƒ(์ž์‹)ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž์—์„œ ์ธ์ž๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์— base์™€ sealed๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • C# ์—์„œ๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค ์ƒ์„ฑ์ž ์ค‘์—์„œ ์‚ฌ์šฉ์ž ์ง€์ • ์ƒ์„ฑ์ž(๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ์ƒ์„ฑ์ž)๊ฐ€ ์กด์žฌ ํ•  ๋•Œ ๋ถ€๋ชจ ํด๋ž˜์Šค ์ƒ์„ฑ์ž์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ (Ex. ๋งค๊ฐœ๋ณ€์ˆ˜ = p) ๋ฅผ ์ž์‹ํด๋ž˜์Šค์—์„œ ์ „๋‹ฌํ•˜์—ฌ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ์ž์‹ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค(๋ถ€๋ชจํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๊ณ  ์žˆ๋Š”๊ฒฝ์šฐ)๋ฅผ ์ƒ์„ฑํ• ๋•Œ ๋ถ€๋ชจํด๋ž˜์Šค์— ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ์ดˆ๊ธฐํ™” ํ•  ์ˆ˜ ์žˆ์Œ. cf) Java? Python์ธ๊ฐ€? ๊ฑฐ๊ธฐ์„œ ๋ดค๋˜ super() ๊ฐ™์€ ๊ฒƒ ์ธ๋“ฏํ•จ.

'๐Ÿ’ป Programming Language > C#' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

10. is ์—ฐ์‚ฐ์ž์™€ as ์—ฐ์‚ฐ์ž  (0) 2022.04.06
09. ์ƒ์†๊ด€๊ณ„์˜ ํด๋ž˜์Šค ํ˜•๋ณ€ํ™˜  (0) 2022.04.06
07. ์ƒ์†  (0) 2022.04.06
06. ์ ‘๊ทผ์ œํ•œ์ž(Access Modifier)  (0) 2022.04.06
05. this, this() ์ƒ์„ฑ์ž  (0) 2022.04.06
'๐Ÿ’ป Programming Language/C#' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • 10. is ์—ฐ์‚ฐ์ž์™€ as ์—ฐ์‚ฐ์ž
  • 09. ์ƒ์†๊ด€๊ณ„์˜ ํด๋ž˜์Šค ํ˜•๋ณ€ํ™˜
  • 07. ์ƒ์†
  • 06. ์ ‘๊ทผ์ œํ•œ์ž(Access Modifier)
S.Honey
S.Honey
  • S.Honey
    Algo ์“ฐ์ž
    S.Honey
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (123)
      • ํšŒ๊ณ  (0)
        • ์ทจ์—… ํ›„ ํšŒ๊ณ  (0)
      • ๐Ÿƒ Frontend Road-Map (2)
        • ๐Ÿšฉ Summary (1)
        • ๐Ÿ“š Road-Map Contents (1)
        • ๐ŸŸง HTML (0)
        • ๐ŸŸฆ CSS (0)
        • ๐ŸŸจ Javascript (0)
        • โฌœ React (0)
        • ๐ŸŸช Redux (0)
      • Backend (0)
        • QueryDSL (0)
      • ๐Ÿ’ป Programming Language (54)
        • C# (51)
        • Flutter-Dart (3)
        • Java (0)
      • ๐Ÿ“š Computer Science (4)
        • Algorithms (4)
        • Database (0)
        • Network (0)
        • Operating System(OS) (0)
      • ๐Ÿ’ฏ CodingTest (60)
        • BaekJoon (22)
        • Programmers (34)
        • CodeTree (4)
      • โœ’๏ธ Design Pattern (1)
      • ๐Ÿฑ Etc (2)
        • Jenkins Plugin ์ œ์ž‘๊ธฐ (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ๋งํฌ

    • ๊ณต์ง€์‚ฌํ•ญ

      • ๐Ÿ“– ๊ณต๋ถ€ ์ฐธ๊ณ  ๊ต์žฌ ๋ฐ ์ž๋ฃŒ
    • ์ธ๊ธฐ ๊ธ€

    • ํƒœ๊ทธ

      ์นด์นด์˜ค
      ์‹œ๋ฎฌ๋ ˆ์ด์…˜
      c#
      ๊ตฌํ˜„
      Flutter
      ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
      ์‚ผ์„ฑsw์—ญํ…Œ
      ๋ฌธ์ž์—ด ํŒŒ์‹ฑ
      Algorithm
      ์ž๋ฃŒ๊ตฌ์กฐ
      ์Šคํ„ฐ๋””
      ์ฝ”๋“œํŠธ๋ฆฌ
      BAEKJOON
      JavaScript
      ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
      DP
      ์“ฐ์…จ์ž–์•„
      ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
      JS
      ๋ฐฑ์ค€
      DART
      ํŒŒ์ด์ฌ
      sort
      BFS
      ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰
      ์ด์ง„ํƒ์ƒ‰
      ๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ
      Java
      programmers
      ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • ์ตœ๊ทผ ๋Œ“๊ธ€

    • ์ตœ๊ทผ ๊ธ€

    • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.1
    S.Honey
    08. baseํ‚ค์›Œ๋“œ์™€ sealedํ•œ์ •์ž
    ์ƒ๋‹จ์œผ๋กœ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

    ๋‹จ์ถ•ํ‚ค

    ๋‚ด ๋ธ”๋กœ๊ทธ

    ๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
    Q
    Q
    ์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
    W
    W

    ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

    ๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
    E
    E
    ๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
    C
    C

    ๋ชจ๋“  ์˜์—ญ

    ์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
    S
    S
    ๋งจ ์œ„๋กœ ์ด๋™
    T
    T
    ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
    H
    H
    ๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
    Shift + /
    โ‡ง + /

    * ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.