C# 연습문제 : 클래스 (뇌를 자극하는 C# 5.0)
1.클래스와 객체 , 인스턴스는 서로 어떤 점이 다른가요?
클래스는 멤버(속성, 메서드)를 가지고 있는 코드의 기본 단위입니다. 붕어빵 기계를 예로 들면 클래는 붕어빵틀 입니다.
객체와 인스턴스는 서로 같은 개념이고, 클래스에서 생성된 하나의 실체화된 것을 말합니다. 붕어빵틀에서 찍어서 나온 붕어빵인 것 입니다.
2.다음 코드에서 오류를 찾고, 오류의 원인을 설명하세요
class A
{
}
class B : A
{
}
public class C
{
private static void Main(string[] args)
{
A a = new A();
B b = new B();
A c = new B();
B d = new A();
}
}
자식 클래스가 부모클래스를 받아서 객체를 생성 할 수 없다.
B d = new A();
3. this 키워드와 base 키워드에 대해 설명하세요.
this란 객체가 자기 자신을 가리키고 싶을 때 사용하는 키워드입니다. 만약 외부에서 변수 이름이 내부 변수이름과 같다면 그것을 구분 짓기 위해 this를 붙여서 사용합니다.
base란 부모 클래스의 멤버에 접근하기 위해 사용하는 키워드입니다. 부모 코드에서 작성된 코드를 자식이 이용하고 싶을 때 사용됩니다.
4.구조체에 대한 다음 설명 중 틀린 것을 모두 찾으세요.
- struct 키워드를 이용하여 선언한다.
- 복사할 때 얕은 복사가 이루어진다. - 깊은 복사가 이루어진다.
- 참조 형식이다. - 값 형식이다.
- 메소드를 가질 수 있다.
5. 다형성은 무엇이며, 오버라이딩과 무슨 관계가 있는지 설명하시오.
다형성이란 여러 형태를 가질 수 있음을 의미합니다. 상속의 개념에서 확인 할 수 있는 부분입니다. 예를 들어 동물이라는 부모 클래스가 있을 때 개,고양이, 사자 등 여러 자식 클래스가 있을 수 있는데 이러한 형식을 보고 다형성이라고 합니다.
오버라이딩은 부모의 메서드가 선언된 상태에서 자식이 부모의 메서드를 재정의를 해야 할 경우 오버라이딩을 이용합니다. 재정의를 하는 이유는 자식에서 이미 부모에서 정의된 메서드의 내용을 추가하거나 변경해서 사용해야 할 경우가 있기 때문입니다.