728x90
- 클래스 개념
- 클래스는 사용자가 직접 만든 틀
- 변수(필드)와 함수(메소드)를 하나의 단위로 결합
- 상속, 다형성, 파생 클래스 등 클래스의 특수화 메커니즘을 가짐
- 접근 한정자
- 클래스의 멤버에 액세스(접근)할 수 있는 수준
public | 액세스가 제한되지 않음 |
protected | 이 클래스 또는 이 클래스에서 파생된 클래스로만 액세스가 제한됨 |
internal | 현재 어셈블리(.exe, .dll 등)로만 액세스가 제한됨 |
protected internal | 포함하는 클래스, 포함하는 클래스에서 파생된 클래스 또는 동일한 어셈블리 내의 클래스로만 액세스가 제한됨 |
private | 이 클래스로만 액세스가 제한됨 |
private protected | 포함하는 클래스 또는 동일한 어셈블리 내의 포함하는 유형으로부터 파생된 클래스로만 액세스가 제한됨 |
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _077_Class
{
class AA
{
//멤버 변수
int num1; //기본적으로 private 속성
public int num2, num3;
//멤버 함수
public void Print()
{
Console.WriteLine("aa : {0}, bb : {1}, cc : {2}", num1, num2, num3);
}
private void PrintPrivate() //priavte 접근 한정자 : 외부 접근 불가
{
Console.WriteLine("aa : {0}, bb : {1}, cc : {2}", num1, num2, num3);
}
}
class Program
{
static void Main(string[] args)
{
AA aa = new AA(); //int aa;
//aa.num1 = 10; //오류(private 속성이기 때문에)
aa.num2 = 100; //public 속성은 접근 가능
aa.num3 = 1000;
aa.Print();
// aa.PrintPrivate(); //오류
}
}
}
- new키워드
- 클래스의 객체 생성
- 클래스명 객체명 = new 생성자
AA aa = new AA();
- 생성자 소멸자
- 생성자 : 객체 생성할 때 호출(new)
- 소멸자 : 객체가 소멸될 때 호출(GC)
생성자 | 소멸자 |
- 클래스 명 동일 - 리턴형 X - 접근 한정자 public - 멤버 변수 초기화 - 객체 생성 시 자동으로 처리하는 것들 |
- 클래스 명 동일 - 리턴형 X - 접근 한정자 X - '~'키워드로 구성 |
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _078_Constructor
{
class AA
{
int a;
float f;
public AA()
{
a = 0;
f = 0f;
Console.WriteLine(" Call Constructor ");
Console.WriteLine(" a : {0}", a);
Console.WriteLine(" f : {0}", f);
}
public AA(int _a)
{
a = _a;
Console.WriteLine(" Call Constructor ");
Console.WriteLine(" a : {0}", a);
Console.WriteLine(" f : {0}", f);
}
public AA(int _a, float _f)
{
a = _a;
f = _f;
Console.WriteLine(" Call Constructor ");
Console.WriteLine(" a : {0}", a);
Console.WriteLine(" f : {0}", f);
}
~AA()
{
Console.WriteLine(" Call Destructor ");
}
}
class Program
{
static void Main(string[] args)
{
//생성자 함수 오버로딩
AA aa = new AA();
AA aaa = new AA(10);
AA aaaa = new AA(100, 0.5f);
}
}
}
728x90
'게임 프로그래밍 > C#' 카테고리의 다른 글
C# 클래스 상속, is/as 키워드 (0) | 2021.12.16 |
---|---|
C# 클래스 static & this (0) | 2021.12.15 |
C# 메서드 오버로딩(Method Overloading) (0) | 2021.12.14 |
C# Call by Value/Call by Reference 차이 (0) | 2021.12.14 |
C# 숫자 달리기 (0) | 2021.12.13 |