제로의영역

7장 클래스 연습문제 본문

카테고리 없음

7장 클래스 연습문제

아이큐제로 2019. 6. 24. 17:34

* 본 블로그 글은 머리가 아~~~주 나쁜 왕X100초보가 프로그래밍을 공부하면서 정리를 위해 작성하는 글입니다. 잘못 정리되거나 제가 잘못 이해한 글은 이해 및 조언 부탁드립니다.

* 공부는 '이것이 C#이다' 책을 보고 하고 있습니다. 참고로 저같은 왕초보가 보기 어렵게 써져 있어서 별도의 정리 문서를 만들게 되었습니다.

 

1. 문제: 클래스와 객체, 인스턴스는 서로 어떤 점이 다른가요?

 

답:

 (1) 클래스: 객체를 표현하기 위한 틀로 변수와 메소드로 구성

 (2) 객체: 속성(데이터)과 기능(메소드)으로 나누어 구현한 대상으로 클래스에 선언된 대상

 (3) 인스턴스: 객체가 구현되어 메모리에 할당되고 실제 사용되는 대상 

 

2. 문제: 다음 코드에서 오류를 찾고, 오류의 원인을 설명하세요.

 class A

{

}

 

class B : A

{

}

 

class C

{

      public static void Main( )

       {

          A a = new A( );

          B b = new B( );

          A c = new B( );

          B d = new A();

        }

}

 

답: B d=new A( )

    파생 클래스(자식 클래스)의 객체를 부모 클래스의 객체로 생성할 수 없음

 

3. 문제: this키워드와 base키워드에 대해 설명하세요.

 (1)this키워드: 자기자신(소속된 클래스의 정의된 멤버)을 가리키는 키워드

 (2)base 키워드: 상속시 부모생성자에 입력값을 전달할 때 상속해준 기반클래스(부모클래스)를 가리키는 키워드 

 

4. 문제: 구조체에 대한 다음 설명 중 틀린 것을 모두 찾으세요.

 (1) struct 키워드를 이용하여 선언한다.

 (2) 복사할 때 얕은 복사가 이루어진다. >> 틀림: 깊은 복사가 이루어짐

 (3) 참조 형식이다 >> 틀림: 값 형식

 (4) 메소드를 가질 수 있다.

 

5. 문제: 다형성은 무엇이며,오버라이딩과 무슨 관계가 있는지 설명하세요.

 (1) 다형성: 객체가 여러 형태를 가지는 것을 말함.

 (2) 오버라이딩과의 관계: 부모클래스의 객체들을 변형하기 위해서는 파생클래스를 생성하여 부모클래스에서 정의된 멤버들을 재정의 해주어야 함. 이 때 변형해주려는 부모클래스의 객체는 virtual로 수식해주고 파생클래스는 override로 재정의 해줘야함.