'상속'에 해당되는 글 2건

  1. 2009.05.31 [C#] this와 상속
  2. 2009.05.31 [C#] 상속과 sealed 1

[C#] this와 상속

Programming/.NET Programming 2009. 5. 31. 07:07

키워드 this

this : Class에서 정의한 변수나 함수에 접근할 때 사용. 즉, 클래스 멤버 변수나 멤버 함수에 접근할 때 사용. 혹은 class의 멤버 변수나 멤버 함수라는 것을 명시적으로 표현하기 위해서 사용.

키워드 this 예제

using System;

 

namespace This

{

    class A

    {

        public static void Main(string[] args)

        {

            B b = new B("HELLO");

            Console.WriteLine(b.strMessage);

            Console.WriteLine(b.num);

        }

    }

 

    class B

    {

        public string strMessage;

        public int num;

        public B(string strMessage)

        {

            // 함수의 지역변수가 아닌 Class 멤버 변수에 접근하기 위해서 사용
           
this.strMessage = strMessage; 

            this.num = 10; // 명시적으로 하기 위해서 사용

        }

    }

}


상속 관련 문제

Q. B가 부모클래스이고, A가 자식클래스일 때 어떤 것이 맞는 표현일까요?
1. B b = new A();
2. A a = new B();

A. 1. B b = new A();
 

 위 벤다이어그램에서 보면 B b = new A();일 경우 b는 A크기의 공간을 할당 받아 가리키게 되며, Class B가 가진 멤버 변수에 전부 접근이 가능하다. 하지만 A a = new B();일 경우 a는 B크기의 공간을 할당 받아 가리키게 되며, Class A가 가진 멤버 변수에 전부 접근이 가능하지는 않다. 그렇기 때문에 에러가 난다.


'Programming > .NET Programming' 카테고리의 다른 글

[C#] Collections (1)  (0) 2009.06.02
[C#] Enum과 배열  (0) 2009.05.31
[C#] 오버로딩과 오버라이딩  (0) 2009.05.31
[C#] 상속과 sealed  (1) 2009.05.31
[C#] 인터페이스, 추상클래스, 클래스  (1) 2009.05.31
:

[C#] 상속과 sealed

Programming/.NET Programming 2009. 5. 31. 05:55

상속과 키워드 sealed 용어 정리

상속 : 어떤 클래스를 기본으로 새로운 클래스가 파생되는 것.
부모클래스(기본 클래스)로부터 상속을 받아 자식클래스(파생 클래스)가 생성된다.
상속 과정에서 클래스의 내용이 추가되기도 하고 함수의 내용이 바뀌기도 한다.

sealed : 더이상의 상속을 막는 keyword, 추상클래스/인터페이스 앞에는 못 씀
추상클래스를 상속받은 클래스에서 추상함수를 정의를 해줘야하고, 인터페이스 역시 다른 클래스에 상속을 하여 선언된 함수들을 정의 해줘야 하기 때문이다.

상속과 키워드 sealed 예제

using System;


namespace Study

{

    interface 인터페이스

    {

        void Test();

    }


   
interface
인터페이스2

    {

       void Test();

    }

 

    abstract class 추상클래스

    {

        public abstract void Test();

    }


   
class
일반클래스 : 인터페이스, 인터페이스2, 추상클래스
    {

        void 인터페이스.Test() // '인터페이스.' : 어디에서 상속받은 건지 명시

        {

            throw new NotImplementedException();

        }

 

        void 인터페이스2.Test() // '인터페이스2.' : 어디에서 상속받은 건지 명시
        {

            throw new NotImplementedException();

        }

 

        public override void 추상클래스.Test()
                                    // '추상클래스.' : 어디에서 상속받은 건지 명시
        {

            throw new NotImplementedException();

        }

    }

 

    sealed class 일반클래스2 : 일반클래스 

    {

    }

 

    class 일반클래스3 : 일반클래스2 // Error. 일반클래스2 앞에 sealed 때문에 안됨

    {

        public 일반클래스3()

        {

        }

    }

}



'Programming > .NET Programming' 카테고리의 다른 글

[C#] this와 상속  (0) 2009.05.31
[C#] 오버로딩과 오버라이딩  (0) 2009.05.31
[C#] 인터페이스, 추상클래스, 클래스  (1) 2009.05.31
[C#] static과 new 그리고 property  (0) 2009.05.31
[C#] C# 시작하기  (0) 2009.05.31
: