[C#기초] 3. 클래스
INDEX
클래스
구조체 선언은 값형
클래스 선언은 참조형
실재 객체가 되기 위해서는 new가 필요함
객체 해제는 가비지 컬렉
생성자의 형식
- 클래스와 같은 이름의 메서드형이어야 함
- 매개변수가 있음
- 리턴형은 없음
- 접근 지정자는 public
소멸자의 형식
-
~
로 시작하는 클래스명과 같은 이름의 메서드명이어야함class MyClass { ~MyClass() {} }
-
클래스명과 같음
-
리턴형 없음
-
접근한정자 없음
-
가비지컬렉터에서 알아서 하기 때문에 따로 명시적으로 작성할 필요 없음
-
소멸자는 클래스에서만 있음
-
소멸자는 오직 한개임
-
소멸자는 상속 또는 오버로딩될 수 없음
-
소멸자는 임의로 호출 불가
-
소멸자는 접근 한정자나 매개변수 없음
형식
class class_name { variable 선언; method 선언; }
클래스 형식 예제 코드
class Date { int Year, Month, Day; void Print() { Console.WriteLine("{0} {1} {2}",Year,Month,Day); } }
접근 한정자
-
클래스멤버에 대한 접근 권한 설정
-
private
,protected
,public
,internal
,protected internal
-
internal
- 같은 어셈블리(exe, dll)안에 있을 때만 내외부에서 멤버에 접근 가능
- 클래스 서두에 접근 한정자 생략은
internal
생략한 것
-
protected internal
- 같은 어셈블리(exe, dll)안에서는
internal
과 동일 - 서로 다른 어셈블리안에서 상속관계일 때 하위 클래스는 상위 클래스의
protected internal
멤버에 접근할 수 있음. 외부에서 접근할 수 없음
- 같은 어셈블리(exe, dll)안에서는
-
클래스 자체에 적용하는 접근 한정자
public
: 명시적internal
: 암시적
-
접근 한정자를 이용한 클래스 선ㄴ언 방법 및 예제 코드
[접근한정자] class class_name; { [접근 한정자] variable 선언; [접근 한정자] method 선언; }
클래스 참조
클래스 형태
- 선언한 클래스 -> 참형 클래스 변수
- new 생성한 클래스 -> 객체
클래스 참조 예제 코드
namespace ConsoleApp1 { class MyClass { public int number; public MyClass() { number = 12; } } class Program { static void Main(string[] args) { MyClass MyTest = new MyClass(); MyClass RefClass = MyTest; RefClass.number = 7; Console.WriteLine(MyTest.number); } } }
결과