[C#] this, this(), base, base()

2021. 11. 3. 11:37

this와 this()

thisλŠ” 객체가 μžμ‹ μ„ 지칭할 λ•Œ μ‚¬μš©ν•˜λŠ” ν‚€μ›Œλ“œμ΄λ‹€.

객체 μ™ΈλΆ€μ—μ„œλŠ” 객체의 ν•„λ“œλ‚˜ λ©”μ†Œλ“œμ— μ ‘κ·Όν•  λ•Œ 객체의 이름을 μ‚¬μš©ν•œλ‹€λ©΄

객체 λ‚΄λΆ€μ—μ„œλŠ” μžμ‹ μ˜ ν•„λ“œλ‚˜ λ©”μ†Œλ“œμ— μ ‘κ·Όν•  λ•Œ this ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•œλ‹€.

  • this.name : 클래슀의 ν•„λ“œ
  • name : λ©”μ†Œλ“œμ˜ λ§€κ°œλ³€μˆ˜
class NameClass
    {
        private string name;
        public void SetName(string name)
        {
            this.name = name;
        }
    }

 

this()λŠ” 자기 μžμ‹ μ˜ μƒμ„±μžλ₯Ό 가리킨닀.

λ§€κ°œλ³€μˆ˜μ— 따라 μƒμ„±μžλ₯Ό μ˜€λ²„λ‘œλ”©ν•  λ•Œ 

μƒμ„±μžμ˜ μ½”λ“œ μ•žμ— this()λ₯Ό μ„ μ–Έν•˜μ—¬ λ‹€λ₯Έ μƒμ„±μžλ₯Ό ν˜ΈμΆœν•œλ‹€.

  • this() : MyClass() 호좜
  • this(b) : MyClass(int b) 호좜
class MyClass
    {
        int a, b, c;
        public MyClass()
        {
            this.a = 123;
        }
        public MyClass(int b) : this()
        {
            this.b = b;
        }
        public MyClass(int b, int c) : this(b)
        {
            this.c = c;
        }
    }

 

base와 base()

this와 this()처럼 두 ν΄λž˜μŠ€κ°€ 상속관계일 λ•Œ

μžμ‹ ν΄λž˜μŠ€κ°€ λΆ€λͺ¨ 클래슀의 κ°μ²΄λ‚˜ μƒμ„±μžμ— μ ‘κ·Όν•  경우 base ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•œλ‹€.

    class BaseClass
    {
        protected string name;

        public BaseClass(string name)
        {
            this.name = name;
        }
    }

    class MyClass : BaseClass
    {
        public MyClass(string name) : base(name)
        {
            Console.WriteLine($"base name : {base.name}");
        }
    }

 

728x90

BELATED ARTICLES

more