-
[C# 기본] 6. 클래스C#/강의 | Lecture 2018. 11. 29. 22:27
1. 클래스
1-1. 변수와 메서드를 그룹화한 것
1-2. 그룹화를 위해 class 키워드와 형식 사용
1-3. new 연산자로 생성하여 사용
1-4. new를 사용하지 않으면 같은 클래스를 참조할 수 있는 변수가 됨
- 반드시 참조 해야함
1-5. 클래스를 new를 통해 생성하면 객체가 됨
1-6. 인스턴스는 본질이고, 객체는 실물인 형상
- A test1 = new A(); // A test1은 객체, new A()는 인스턴스
A test2 = new A(); // A test1은 객체, new A()는 인스턴스
2. 클래스 형식과 접근 한정자
2-1. 클래스 형식은 아래와 같음
- class class_name
{
// 멤버 변수, 함수 정의
}
- class Date
{
int Year, Month, Day;
void Print()
{
// todo...
}
}
2-2. 접근한정자를 통해 클래스 멤버에 대한 접근 권한 설정
- 종류는 private, protected, public의 특징은 C++에서 사용하는 것과 동일
- public은 클래스 내외부에서 모두 접근 가능, 상속관계에서도 동일하게 접근 가능
- private는 클래스 또는 구조체 안에서만 멤버에 접근, 클래스 외부에서 접근 불가
- protected는 클래스 안에서는 private와 같은 역할, 상속받은 클래스 안에서 상위 protected 멤버 접근 가능
- 접근한정자 class class_name
{
접근한정자 variable;
접근한정자 method;
}
- 접근 한정자를 명시 하지 않을 경우 private가 기본값
2-3. internal 접근한정자
- C++에는 없는 접근 한정자이지만 사용 빈도가 적은 접근한정자
- 같은 어셈블리(exe, dll) 안에 있을때만 내외부에서 멤버에 접근 가능
- 클래스 정의 서두에 접근 한정자 생략은 internal 생략한 것
- protected internal 접근 한정자도 있는데, 거의 사용하지 않음
3. 객체 생성 및 멤버 접근
3-1. 객체 생성 키워드는 new, 객체 해제는 가비지컬렉터가 존재
- C++에서 사용한 delete 키워드는 사용하지 않음
3-2. 객체의 멤버는 '.'과 함께 표시
- 멤버 변수 접근은 object_name.variable
- 멤버 함수 접근은 object_name.method
4. 생성자와 소멸자
4-1. 생성자는 객체를 생성할 때 자동으로 호출되는 메서드, new 에서 호출
4-2. 기본생성자는 클래스명과 같은 이름으로 매개변수와 리턴형은 없으며, 접근 한정자는 public
4-3. 매개변수가 있는 생성자는 매개변수가 있다는 점 빼고는 동일
4-4. 소멸자는 객체가 소멸될 때 호출되는 메서드, 가비지컬렉터에서 호출
4-5. 소멸자는 클래스명과 같고 리턴형과 접근 한정자, 매개변수가 없으며 '~'로 시작
4-6. 소멸자는 클래스에만 있고, 상속이나 오버로딩 불가,
5. 정적 멤버 선언과 사용
5-1. C#에서 클래스 내부의 static은 객체를 생성하지 않고 멤버를 사용하는 목적
- C에서는 변수 값 유지(글로벌 변수), C++에서는 객체 안에서 변수 공유
5-2. Main()은 static으로 선언되어있으므로, static으로 선언된 함수와 변수 호출 가능
6. 클래스 참조
6-1. 클래스 형태는 선언한 클래스와 new로 생성한 클래스 2가지로 나뉨
- 선언한 클래스는 참조형 클래스 변수
- new로 생성한 클래스는 객체
- MyClass MyTest = new MyClass(); // 객체 생성
MyClass MyRef = MyTest; // 참조 변수
7. this 키워드
7-1. this는 객체 자신을 참조하는 키워드, C++에서 사용하는 방식과 의미가 동일
7-2. 사용 형식은 아래와 같음
- this.member
7-3. 메소드의 매개변수와 멤버 변수명이 같을 때 사용
- this.member_variable = 매개변수;
- this.number = number;
'C# > 강의 | Lecture' 카테고리의 다른 글
[C# 기본] 7. 속성과 인덱서 (0) 2018.11.29 [C# 기본] 5. 파일입출력 (0) 2018.11.29 [C# 기본] 4. 배열 (0) 2018.11.29 [C# 기본] 3. 기본 문법 (0) 2018.11.29 [C# 기본] 2. 데이터형 (0) 2018.11.28 댓글