[내일 배움 캠프 2주차] 클래스 기초

하얀요니콘·2025년 7월 8일
0

오늘은 간단하게 클래스 기초지식들 중 추가적으로 알아낸 내용들 위주로 정리한다

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라는 함수를 호출 할 수 있다. 이 경우

  • Student는 "인간이다"를 출력 (재정의가 안되어서, 부모것을 사용)
  • Baby는 "응애"를 출력 (재정이가 된 자식의 것을 사용)
    한다고 보면 된다.

Abstract 클래스

Abstract는 Virtual과는 약간 다르게, "부모에서 정의가 이루어지지 않고", "반드시 자식에서 오버라이딩 하여 정의해 줘야 한다"를 의미한다.

자 그런데, Abstract클래스는 당연히 Abstract한 함수들이 들어가 있겠지만, 모든 메서드가 Abstract일 필요는 없다! (모두 Abstract하면 인터페이스일거다.)

그리고 주의할 점은, Abstract는 정의되지 않은 메소드가 있기 때문에, abstract클래스를 직접 생성하는것은 불가능하고, 이 Abstract클래스를 상속받는 자식 클래스로 new를 호출하여 만들어야 한다.

Overriding과 Overloading

어.. 이거 햇갈렸는데 이제 확실히 구분하고 가자

  • Overriding : 부모 - 자식 클래스 간의 메소드 재정의
  • Overloading : 하나의 같은 이름을 가진 메소드가 다른 변수를 받을 때

차이를 구분하도록 하자.

추가 자료 구조

Stack과 Heap은 알고 있다. 다만 컴퓨터에서 데이터를 저장 할 경우 다음과 같이 사용한다.

  • Stack에는 값 형식(int, char...) 이 들어간다
  • Heap에는 참조형식(string, class) 이 들어간다.
    Heap은 컴퓨터에서 저장소라고 보면 된다. 다만 이를 Stack에 직접 저장하지 않고, Stack에는 주소만, 그리고 그 주소에 이어진 실제 데이터는 Heap에 저장된다고 보면 된다.

오늘 한게 많은거 같은데, 정작 정리하면 적다.

profile
코딩공부용

0개의 댓글