클래스의 활용
================================ Outline ====================================
클래스
- 얕은 복사와 깊은 복사
- this
- 상속
- 은닉성
- 형변환
- 오버라이딩과 다형성
----------------------------------------------------------------------------
<클래스>
[얕은 복사와 깊은 복사]
클래스 내에 두 개의 정수를 담는 변수를 선언했다고 가정하고 그 값에 각 각 1과 2를 넣은 후 그대로 대입한다면 얕은 복사만이 일어난다. 깊은 복사를 위해서는 다음의 코드를 사용해야 한다.
[this]
this는 객체가 스스로를 가리킬 때 사용된다.
this() 생성자는 자기 자신의 생성자를 나타낸다.
ex) public MyClass(int b): this()
{
this.b = b;
}
[상속]
base 키워드는 부모(기반) class를 가리킨다. 콜론(:)을 사용하여 콜론 오른쪽에 상속받은 클래스를 기입하여 준다.
상속은 한 클래스가 다른 클래스로부터 데이터를 물려 받는 것을 뜻한다.
ex) class base
{
public void BaseMethod()
{ /* ... */}
}
class derived: base
{
public void derivedMethod()
{
base.BaseMethod();
}
}
[은닉성]
객체 지향 프로그램의 3대 특징은 은닉성, 상속성, 다형성이다.
은닉성(encapsulation)은 최소한의 기능만을 노출하고 내부는 모두 감추는 것이다.
접근 한정자에는 public, protected(상속만 접근 가능), private, internal(내부 assembly만 접근 가능), protected internal(내부 상속 assembly)
[형변환]
부모 클래스를 자식클래스로 형변환을 할 때는 반드시 이를 명시해 주어야 한다.
‘is' 연산자는 객체가 해당 형식에 해당하는지를 검사하는 bool 연산자이다.
‘as' 연산자는 형식 변환 연산자와 같은 기능을 한다.
[오버라이딩과 다형성]
오버라이딩은 상속 받은 메소드를 재정의하는 것을 뜻한다.
다형성은 OOP에서 객체가 여러 가지의 정의를 가지는 것을 말한다.
메소드 숨기기란, CLR에게 기반 클래스에서 구현된 버전의 메소드를 감추고 파생 클래스에서 구현된 버전만을 보여주는 것을 말한다.
오버라이딩 봉인은 ‘sealed'키워드를 사용한다.
중첩 클래스는 클래스 내의 속한 클래스를 뜻한다.
분할 클래스란, 여러 번에 나눠서 구현하는 클래스이다.
확장 메소드란, 기존의 메소드 기능을 확장하는 기법이다.