오늘은 간단하게 클래스 기초지식들 중 추가적으로 알아낸 내용들 위주로 정리한다
Virtual 과 Override
public, private과 같이 매서드 앞에 붙여 사용하며, 이는 부모, 자식 상호 관계에서 존재한다.
Virtual은 부모 클래스에서 오버라이딩 기능을 하기 위해 메소드에 넣어준다. 즉 일단, 부모 클래스에서 Virtual한 메소드는 이미 정의되어있다.
이제 이 부모를 상속받은 자식들은, Override를 사용하여 이 매소드를 재정의 할 수 있다.
예를들어 parent class People에 Do()라는 함수를 정의하자.
public virtual void Do()
{
Console.WriteLine("인간이다");
}
이제 자식 클래스 두개 Student와 Baby가 있다고 하자. Baby에는 오버라이딩을 하여 함수를 구현 할 것이다.
public override void Do()
{
Console.WriteLine("응애");
}
자 이러면, 둘다 People이라는 부모를 상속 받고, Do라는 함수를 호출 할 수 있다. 이 경우
Abstract 클래스
Abstract는 Virtual과는 약간 다르게, "부모에서 정의가 이루어지지 않고", "반드시 자식에서 오버라이딩 하여 정의해 줘야 한다"를 의미한다.
자 그런데, Abstract클래스는 당연히 Abstract한 함수들이 들어가 있겠지만, 모든 메서드가 Abstract일 필요는 없다! (모두 Abstract하면 인터페이스일거다.)
그리고 주의할 점은, Abstract는 정의되지 않은 메소드가 있기 때문에, abstract클래스를 직접 생성하는것은 불가능하고, 이 Abstract클래스를 상속받는 자식 클래스로 new를 호출하여 만들어야 한다.
Overriding과 Overloading
어.. 이거 햇갈렸는데 이제 확실히 구분하고 가자
차이를 구분하도록 하자.
추가 자료 구조
Stack과 Heap은 알고 있다. 다만 컴퓨터에서 데이터를 저장 할 경우 다음과 같이 사용한다.
오늘 한게 많은거 같은데, 정작 정리하면 적다.