클래스

폭풍저그머성찡 ㅣ 2018. 12. 15. 19:17

c의 구조체 같은 개념


c#에도 구조체는 있지만 구조체는 값타입을 만들어내고 클래스는 참조타입을 만들어낸다.


쉽게 말해서 구조체가 일반 변수같은 느낌이면 클래스는 포인터같은 느낌?


사실 차이점은 거의 없고 다 비슷한데 상속이 안된다는 점만 좀 다른 것 같다.


또 클래스는 포인터 개념이기 때문에 함수 인자로 줘서 처리 할 때에도 편리하다는 장점이 있다.


C로 코딩할 때 다음과 같은 예제를 본 적이 있을 것이다.


void swap(int a, int b) {

int t = a;

a = b;

b = t;

}


void main() {

int a = 5;

int b = 10;

swap(a, b);

return 0;

}


위와 같은 예제에서 main에 선언 되어있는 a, b 두 변수는 값타입이기 때문에 인자로 전달 될 때 복사되어 전달 된다.


따라서 main에 있는 두 변수는 swap 함수를 몇번 실행하든 상관없이 그대로이다.


클래스는 주로 객체를 표현하고 그 객체들을 인자로 전달해서 처리할 때가 많기 때문에 이런 면에서 구조체보다 편리하다.



-=-=-=---=--=-=-=-=--=-=-=-=-=-=---=--=-=-=-=--=-=-=-=-=-=---=--=-=-=-=--=-=-=-=-=-=---=--=-=-=-=--=-=-=


클래스에는 메서드, 속성, 필드, 이벤트 등의 멤버가 포함되며


클래스로 부터 객체를 생성하서 사용하게 된다.


클래스를 정의할 때 중요한 멤버는 공용 메서드와 속성인데, 이 멤버들은 외부 객체와 상호작용을 위해서 사용된다.



메서드 : 클래스에서 실제로 동작하는 코드 블럭


속성 : 클래스의 내부 데이터를 외부에서 사용할 수 있게 하거나, 외부에서 클래스 내부의 데이터를 간단하게 설정할 때 사용한다.


필드 : 데이터 타입과 변수에서 설명했듯 전역변수라고 생각하면 된다.


메서드안의 지역변수와는 다르게 값이 계속 유지되므로 객체의 상태를 유지하는데 사용된다.


이벤트 : 객체 내부의 특정 항태 혹은 이벤트를 외부로 전달하는데 이용된다. 특정 이벤트가 발생하면 그 이벤트를 구독한 모든 외부 객체에게 


정보를 통보하는 식으로 동작한다.



public class SG

{

// 필드

private DateTime time;

private bool paradox;


//이벤트

public event EventHandler RewindingTime;


//생성자

public SG() 

{

paradox = false;

time = DateTime.Now;

Console.Write({time});

}


//메서드

void setTime(DateTime x) {

this.time = x;

}


//속성

public DateTime time

{

get { return this.time };

set { 

this.time = value;

Console.WriteLine("Time has been changed!!\n");

}

}

}










'공부 > C#' 카테고리의 다른 글

static 개념  (0) 2018.12.17
delegate 개념  (0) 2018.12.17
데이터타입과 변수  (0) 2018.12.15