클래스와 객체
C#의 모든 것은 해당 속성 및 메서드와 함께 클래스 및 객체와 연결된다.
자동차를 예를 들어보자. 자동차는 클래스와 같다
. 무게, 색상, 브랜드 등과 같은 것을 속성, 구동 및 브레이크와 같은 것들을 메서드라고 비유할 수 있다. 폭스바겐 자동차를 만들고 싶다면 자동차 클래스의 속성과 메서드를 사용하여 만들 수 있다. 이때 만들어진 폭스바겐 자동차가 객체
다.
다음은 필수는 아니지만 알아두면 도움 될만한 내용이다.
- C# 파일과 클래스 이름을 동일하게 가져가는 경우가 많다. 코드를 체계적으로 정리하기 위함이다.
- 클래스 이름을 지정할 때 첫 글자는 대문자로 한다.
- 변수가 클래스 내에서 직접 선언되면 이를 ‘필드(field)’ 또는 ‘속성(attribute)’라고 한다.
객체 만들기
예시:
class Car // 자동차 클래스
{
string color = "red"; // 필드
static void Main(string[] args)
{
Car myObj = new Car(); // myObj라는 객체 생성
Console.WriteLine(myObj.color);
}
}
클래스(myObj.color) 내의 변수/필드에 접근하려면 점 구문(.)을 사용
한다.
다중 객체
예시:
class Car
{
string color = "red";
static void Main(string[] args)
{
Car myObj1 = new Car();
Car myObj2 = new Car();
Console.WriteLine(myObj1.color);
Console.WriteLine(myObj2.color);
}
}
한 클래스에 여러 객체를 만드는 것도 가능하다.
여러 클래스 사용1
클래스의 객체를 생성하고 다른 클래스에서 접근할 수도 있다. 이는 더 나은 클래스 구성을 위해 자주 사용된다고 한다.
Car.cs
class Car
{
public string color = "red"; // 접근제한자 public 사용
}
Program.cs
class Program
{
static void Main(string[] args)
{
Car myObj = new Car();
Console.WriteLine(myObj.color);
}
}
Car.cs
스크립트를 살펴보면 string
앞에 public
이라는 키워드가 사용되었다. 이 키워드는 다른 클래스에서의 접근을 허락한다. 이를 접근 제한자
또는 접근 한정자
라고 부르는데, public
이 외에도 private
, protected
등이 있다.
클래스 멤버
앞서 클래스 내에서 선언된 변수를 필드 또는 속성이라고 부른다고 하였다. 클래스 멤버는 클래스 내에 있는 필드 또는 메서드들을 뜻하는 말이다.
예시:
class MyClass
{
// 클래스 멤버
string color = "red"; // 필드
int maxSpeed = 200; // 필드
public void fullThrottle() // 메소드
{
Console.WriteLine("The car is going as fast as it can!");
}
}
필드를 비워 두고 객체를 생성할 때 수정할 수도 있다. 이는 한 클래스에서 여러 객체를 사용할 때 특히 유용하다.
예시:
class Car // Car클래스
{
// 클래스 멤버
string model; // 비어 있는 상태로 선언된 필드
string color;
int year;
static void Main(string[] args)
{
Car Ford = new Car(); // Car클래스에서 Ford 객체 생성
Ford.model = "Mustang";
Ford.color = "red";
Ford.year = 1969;
Car Opel = new Car(); // Car클래스에서 Opel 객체 생성
Opel.model = "Astra";
Opel.color = "white";
Opel.year = 2005;
Console.WriteLine(Ford.model);
Console.WriteLine(Opel.model);
}
}
프로그램에서 사용되는 데이터는 실행될 때 컴퓨터 메모리(RAM)에 저장 공간을 할당받는다. 클래스에 객체가 만들어질 때도 각각의 객체마다 별도로 저장 공간을 할당 받는다.
즉, Ford.model = “Mustang”;
이라는 코드가 실행되면 Ford
라는 객체의 model
에 Mustang
이라는 값이 저장되는 것이지 Car
클래스의 model
필드에 Mustang
이라는 값이 저장되지 않는다.
ps. 단 클래스를 정의하는 것만으로는 저장공간이 할당되지 않는다고 한다.
객체 메서드
메서드는 일반적으로 클래스에 속하며, 객체의 동작 방식을 정의한다. 필드와 마찬가지로 점 구문(.)을 사용하여 메서드에 접근 할 수 있다. 그리고 메서드를 호출할 때는 이름 뒤에 두 개의 괄호()와 세미콜론을 사용한다.
예시:
class Car
{
string color; // field
int maxSpeed; // field
public void fullThrottle() // method, public 접근 제한자를 사용했다는 점에 유의하자.
{
Console.WriteLine("The car is going as fast as it can!");
}
static void Main(string[] args)
{
Car myObj = new Car();
myObj.fullThrottle(); // Call the method
}
}
앞의 예시에서 fullThrottle
메소드 앞에 public
키워드가 붙었다. 그 이유는 public(공개)
메소드는 객체를 생성한 후에만 호출이 가능
하고, 객체의 상태를 변경하거나 기능을 실행할 수 있다.
ps.static(정적) 메서드의 경우에는 클래스의 객체를 만들지 않고도 접근할 수 있지만, 클래스의 필드에 직접 접근하여 값을 수정할 수 없다.
'게임 & 게임개발 > C# 기초' 카테고리의 다른 글
[C#기초] 클래스 생성자(Class Constructor)란 무엇일까? (0) | 2024.04.21 |
---|---|
객체지향 프로그래밍(Object Oriented Programming)이란 무엇일까? (3) | 2024.04.19 |
[C#기초] 반복문, 배열, 메소드 (0) | 2024.04.18 |
[C#기초] 문자열, if문, switch문 (0) | 2024.04.17 |
[C#기초] Tyep Casting(타입 캐스팅)과 Parameter(매개변수) (0) | 2024.04.16 |