본문 바로가기
Unity/TIL

[면접대비] 객체와 한정자

by 김차루 2024. 7. 1.
스파르타 내배캠 면접 대비

 

 

 

확인 문제

using System;

public class Car
{
    // 속성
    public string Make { get; set; }
    public string Model { get; set; }
    public int Year { get; set; }

    // 메서드
    public void DisplayInfo()
    {
        Console.WriteLine($"Car Make: {Make}, Model: {Model}, Year: {Year}");
    }
}

class Program
{
    static void Main(string[] args)
    {
        Car car1 = new Car();
        car1.Make = "Genesis";
        car1.Model = "G70";
        car1.Year = 2020;
        car1.DisplayInfo();

        Car car2 = new Car();
        car2.Make = "Hyundai";
        car2.Model = "Sonata";
        car2.Year = 2022;
        car2.DisplayInfo();
    }
}

 

위 예제 코드에서 Car는 무엇을 나타내나요? car1과 car2는 무엇을 나타내나요?

Car는 클래스로 표현하고 싶은 대상을 추상화하여 대상과 관련된 변수와 메서드를 정의합니다.
car1, car2는 Car 클래스를 이용하여 실체화한 인스턴스입니다. 

 

위 코드에서 Car 클래스에 정의된 메서드를 호출할 때 car1과 car2를 사용해야 하는 이유는 무엇인가요?

Car 클래스는 하나의 틀입니다. 틀에 해당하는 내용을 사용하기 위해서 틀을 이용하여 실제로 존재하는 오브젝트를 찍어내야 합니다.
따라서 Car 클래스의 정보가 담긴 오브젝트를 만들고 그 오브젝트를 이용하여 메서드를 사용하게 됩니다. 

 

위 코드에 어떤 메서드를 추가하고 아래와 같이 사용했습니다.SomeMethod에는 static 한정자가 붙어있을까요? 그 이유는 무엇인가요?

Car.SomeMethod();
Static 한정자는 변수, 함수, 클래스를 지정하면 프로그램 내에서 단 한 개만 존재함을 의미합니다. 이것을 Car 클래스 내에서 선언했다면 객체(인스턴스) 단위가 아닌 클래스 단위로 작동하게 되기 때문에 위의 함수를 사용할 수 있게 됩니다. 

 

설명 문제

 

객체란 무엇인가요? 클래스와 어떤 연관이 있나요?

객체는 존재하는 모든 실체를 뜻합니다. 프로그램 상에 정의만 된 청사진인 Class를 통해서 객체를 만들 수 있습니다.  

 

생성자에 대해 간단하게 설명해주세요.

생성자는 오브젝트가 생성될 때 어떻게 초기화할지 정의하기 위해 사용하는 특수한 메서드입니다. 
생성자의 이름은 클래스의 이름과 같으며 오브젝트가 생성될 때 실행됩니다. 

 

접근제한자란 무엇이며, 각각 어떤 차이가 있는지 비교해서 설명해주세요.

접근 제한자는 클래스 멤버의 공개 여부를 정하는 키워드입니다.
public, private, protected 이렇게 총 3가지를 주로 사용하며
public은 클래스 외부에서 멤버에 접근 가능하게 공개하고
private은 외부에서 접근할 수 없도록 감추는 키워드입니다.
protected는 클래스 내부와 파생 클래스에서만 멤버에 접근 가능하도록 보호하는 키워드입니다. 

 

static 한정자에 대해 설명해주세요.

Static 한정자는 변수, 함수, 클래스를 지정하면 프로그램 내에서 단 한 개만 존재함을 의미합니다. 프로그램의 시작 시점에 메모리에 로드되며 클래스 이름을 통해 접근할 수 있습니다. 

 

실습 문제

[현재까지 생성된 Item의 개수를 추적해보기]

생성자를 통해 아이템을 생성할 때마다, 지금까지 생성된 아이템의 개수를 따로 저장하는 변수를 Item에 만들고 싶습니다. 

Item : 아이템의 정보를 저장하는 클래스

using System;

namespace StaticFieldPractice
{
    public class Item
    {
        // TODO: Item의 개수를 저장하는 static 필드 선언 //
        
        // 답
        public static

        public string Name { get; set; }

        // 생성자 함수
        public Item(string name)
        {
            this.Name = name;
            // TODO: static 필드 값을 증가시키기 //
            
            // ******************************** //
        }

        
        public static int GetItemCount()
        {
            // 현재까지 생성된 Item 개수를 반환  //
            
            // ******************************** //
        }
    }

    class Program
    static void Main(string[] args)
        {
            // Item 인스턴스 생성
            Item item1 = new Item("Item1");
            Item item2 = new Item("Item2");

            // 생성된 Item 개수 출력
            Console.WriteLine("Total Items Created: " + Item.GetItemCount());
        }
    }
}

'Unity > TIL' 카테고리의 다른 글

Unity Extension Method / 확장 메서드  (0) 2024.07.05
Unity 바인딩  (0) 2024.07.02
피드백에 대한 수정 및 공부  (0) 2024.06.26
Unity photon 멀티플레이 예외처리  (0) 2024.06.24
Unity Photon.Pun2 멀티 동기화  (0) 2024.06.21