본문 바로가기

C#/Knowledge

객체와 한정자

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

Car : 클래스로 자동차의 브랜드, 모델, 연식과 같은 속성을 정의한다. 또한 Car 클래스에는 자동차의 정보를 출력하는 DisPlayInfo라는 메서드가 포함되어 있다.

car1과 car2는 Car클래스의 인스턴스이다. 이는 Car 클래스의 설계도를 기반으로 생성된 구체적인 객체를 의미한다. 각각car1과 car2는 독립적인 자동차를 의미하며 해당 자동차의 정보를 갖고 있다.

 

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

Car클래스의 DisplayInfo 메서드는 인스턴스 메서드이다. 이는 특정 인스턴스와 연관된 메서드로, 해당 인스턴스의 속성 값을 사용하여 동작한다. 따라서 car1.DisplayInfo()와 car2.DisplayInfo()를 호출함으로써 각 객체의 속성값을 사용하여 정보를 출력할 수 있다.

 

1-3. 위 코드에 어떤 메서드를 추가하고 아래와 같이 사용했습니다.

SomeMethod에는 static 한정자가 붙어있을까요? 그 이유는 무엇인가요?

SomeMethod 메서드에 static 한정자가 붙어있다. 위와 같은 클래스 이름을 사용하여 메서드를 호출하려면, 해당 메서드는 static으로 선언되어야 한다. static 메서드는 특정 인스턴스가 아닌 클래스 자체에 속하는 메서드이다. 이는 해당 메서드가 인스턴스에 종속되지 않고 클래스 차원에서 호출될 수 있음을 의미한다. 따라서 SomeMethod가 static으로 선언되면 클래스 이름을 통해서 직접 호출이 가능해진다.

 

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

객체 : 클래스의 인스턴스로, 프로그래밍에서 실체를 가진 데이터 구조이다. 객체는 속성과 행동을 가지며, 이들은 클래스에서 정의된 대로 동작한다. 예를 들어 Car클래스가 있다면 car1과 car2는 각각 Car클래스의 객체이다.

클래스 : 객체를 생성하기 위한 설계도이다. 클래스는 속성과 메서드를 정의한다. 클래스를 기반으로 한 객체들은 이 속성과 메서드를 공유하지만, 각각 독립적인 데이터를 가질 수 있다. 클래스는 객체의 구조와 동작 방식을 정의하고, 객체는 이러한 정의를 실제로 구현한다.

 

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

생성자 : 클래스의 인스턴스를 생성할 때 호출되는 특별한 메서드이다. 생성자는 객체의 초기 상태를 설정하기 위해 사용된다. 클래스의 이름과 동일하며, 반환 타입을 명시하지 않는다. 그리고 매개변수를 받아서 객체의 속성들을 초기화 할 수도 있다.

 

2-3. 접근자에 대해 간단하게 설명해주세요.

접근제한자 : 클래스, 메서드, 속성 등에 사용되며, 해당 멤버에 대한 접근 권한을 설정하는 키워드이다. 주로 사용되는 접근제한자는 public, private, protected, internal 등이 있다.

 

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

static 한정자 : 클래스의 멤버(속성,메서드)나 클래스 자체에 적용되며, 인스턴스가 아닌 클래스 자체에 속하게 한다. static 멤버는 객체를 생성하지 않고도 클래스 이름을 통해 직접 접근할 수 있다. static 멤버는 클래스의 모든 인스턴스 간에 공유된다.

 

3. 속성과 변수의 차이점에 대하여 설명해주세요.

속성과 변수는 비슷한 개념이지만 정확히 같지는 않다. 둘 다 데이터를 저장하기 위한 메모리 공간을 의미하지만, 속성은 변수보다 더 많은 기능을 제공한다.

ⓐ 변수

변수를 통해 값을 저장하고 사용할 수 있다.

변수는 보통 클래스나 메서드 내부에서 선언된다.

변수는 직접적인 접근과 수정이 가능하다.

 

ⓑ 속성

속성은 클래스의 데이터 멤버에 대한 접근을 제어하는 방법을 제공한다.

속성은 get 과 set 접근자를 통해 값을 읽거나 설정하는 기능을 제공한다.

속성은 데이터 접근을 더 세밀하게 제어할 수 있으며, 유효성 검사, 변경 통지 등의 부가 기능을 추가할 수 있다.

 

ⓒ 결론

속성은 내부적으로는 변수를 사용하지만, 외부에서는 get과 set 접근자를 통해 값을 읽거나 설정하게 된다.

이를 통해 변수에 직접 접근하지 않고, 필요에 따라 로직을 추가할 수 있다.

속성은 변수와 비슷하지만, 값을 읽고 쓸 때 추가적인 로직을 포함할 수 있으며, 데이터 접근을 더 안전하고 관리하기 쉽다.