클래스를 정의할 때 데이터 유형의 청사진을 정의합니다. 이는 실제로 데이터를 정의하지는 않지만 클래스 이름이 무엇을 의미하는지, 즉 클래스의 객체가 무엇으로 구성되어 있는지, 이 객체에 대해 어떤 작업을 수행할 수 있는지 정의합니다. 객체는 클래스의 인스턴스입니다. 클래스를 구성하는 메서드와 변수는 클래스의 멤버가 됩니다.
클래스 정의
클래스 정의는 class 키워드로 시작하고 그 뒤에 클래스 이름이 옵니다. 한 쌍의 중괄호로 묶인 클래스 본문입니다. 다음은 클래스 정의의 일반적인 형식입니다.
<access specifier> class class_name
{
// member variables
<access specifier> <data type> variable1;
<access specifier> <data type> variable2;
...
<access specifier> <data type> variableN;
// member methods
<access specifier> <return type> method1(parameter_list)
{
// method body
}
<access specifier> <return type> method2(parameter_list)
{
// method body
}
...
<access specifier> <return type> methodN(parameter_list)
{
// method body
}
}참고:
액세스 식별자 <액세스 지정자>는 클래스와 해당 멤버에 대한 액세스 규칙을 지정합니다. 지정하지 않으면 기본 액세스 식별자가 사용됩니다. 클래스의 기본 액세스 식별자는 internal이고 멤버의 기본 액세스 식별자는 private입니다.
데이터 유형 <data type>은 변수의 유형을 지정하고, 반환 유형 <return type>은 반환된 메서드에서 반환된 데이터 유형을 지정합니다.
클래스의 멤버에 액세스하려면 점(.) 연산자를 사용하면 됩니다.
도트 연산자는 개체 이름과 멤버 이름을 연결합니다.
다음 예는 지금까지 논의된 개념을 보여줍니다.
using System;
namespace BoxApplication
{
class Box
{
public double length; // 长度
public double breadth; // 宽度
public double height; // 高度
}
class Boxtester
{
static void Main(string[] args)
{
Box Box1 = new Box(); // 声明 Box1,类型为 Box
Box Box2 = new Box(); // 声明 Box2,类型为 Box
double volume = 0.0; // 体积
// Box1 详述
Box1.height = 5.0;
Box1.length = 6.0;
Box1.breadth = 7.0;
// Box2 详述
Box2.height = 10.0;
Box2.length = 12.0;
Box2.breadth = 13.0;
// Box1 的体积
volume = Box1.height * Box1.length * Box1.breadth;
Console.WriteLine("Box1 的体积: {0}", volume);
// Box2 的体积
volume = Box2.height * Box2.length * Box2.breadth;
Console.WriteLine("Box2 的体积: {0}", volume);
Console.ReadKey();
}
}
}위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.
Box1 的体积: 210 Box2 的体积: 1560
Member Functions and Encapsulation
클래스의 멤버 함수는 A입니다. 함수는 다른 변수와 마찬가지로 클래스 정의 내에 정의 또는 프로토타입을 가지고 있습니다. 클래스의 멤버로서 클래스의 모든 개체에 대해 작동할 수 있으며 개체 클래스의 모든 멤버에 액세스할 수 있습니다.
멤버 변수는 (디자인 관점에서) 객체의 속성이며 캡슐화를 위해 비공개로 유지됩니다. 이러한 변수는 공용 멤버 함수를 통해서만 액세스할 수 있습니다.
위 개념을 사용하여 클래스의 다양한 클래스 멤버의 값을 설정하고 가져옵니다.
using System;
namespace BoxApplication
{
class Box
{
private double length; // 长度
private double breadth; // 宽度
private double height; // 高度
public void setLength( double len )
{
length = len;
}
public void setBreadth( double bre )
{
breadth = bre;
}
public void setHeight( double hei )
{
height = hei;
}
public double getVolume()
{
return length * breadth * height;
}
}
class Boxtester
{
static void Main(string[] args)
{
Box Box1 = new Box(); // 声明 Box1,类型为 Box
Box Box2 = new Box(); // 声明 Box2,类型为 Box
double volume; // 体积
// Box1 详述
Box1.setLength(6.0);
Box1.setBreadth(7.0);
Box1.setHeight(5.0);
// Box2 详述
Box2.setLength(12.0);
Box2.setBreadth(13.0);
Box2.setHeight(10.0);
// Box1 的体积
volume = Box1.getVolume();
Console.WriteLine("Box1 的体积: {0}" ,volume);
// Box2 的体积
volume = Box2.getVolume();
Console.WriteLine("Box2 的体积: {0}", volume);
Console.ReadKey();
}
}
}위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.
Box1 的体积: 210 Box2 的体积: 1560
C#의 생성자
클래스의 생성자는 클래스의 새 객체가 생성될 때 실행되는 클래스의 특수 멤버 함수입니다.
생성자 이름은 클래스 이름과 정확히 동일하며 반환 유형이 없습니다.
다음 예에서는 생성자의 개념을 보여줍니다.
using System;
namespace LineApplication
{
class Line
{
private double length; // 线条的长度
public Line()
{
Console.WriteLine("对象已创建");
}
public void setLength( double len )
{
length = len;
}
public double getLength()
{
return length;
}
static void Main(string[] args)
{
Line line = new Line();
// 设置线条长度
line.setLength(6.0);
Console.WriteLine("线条的长度: {0}", line.getLength());
Console.ReadKey();
}
}
}위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.
对象已创建 线条的长度: 6
기본 생성자 에는 매개 변수가 없습니다. 하지만 매개변수를 가질 수 있는 매개변수가 있는 생성자가 필요한 경우 이러한 종류의 생성자를 매개변수화 생성자라고 합니다. 이 기술은 개체를 생성하는 동안 개체에 초기 값을 할당하는 데 도움이 될 수 있습니다. 자세한 내용은 다음 예를 참조하세요.
using System;
namespace LineApplication
{
class Line
{
private double length; // 线条的长度
public Line(double len) // 参数化构造函数
{
Console.WriteLine("对象已创建,length = {0}", len);
length = len;
}
public void setLength( double len )
{
length = len;
}
public double getLength()
{
return length;
}
static void Main(string[] args)
{
Line line = new Line(10.0);
Console.WriteLine("线条的长度: {0}", line.getLength());
// 设置线条长度
line.setLength(6.0);
Console.WriteLine("线条的长度: {0}", line.getLength());
Console.ReadKey();
}
}
}위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.
对象已创建,length = 10 线条的长度: 10 线条的长度: 6
Destruction in C# 함수
클래스의 소멸자는 클래스의 객체가 범위를 벗어날 때 실행되는 클래스의 특수 멤버 함수입니다.
소멸자 이름에는 클래스 이름 앞에 물결표(~)가 붙습니다. 이는 값을 반환하지 않으며 매개 변수를 사용하지 않습니다.
소멸자는 프로그램을 종료하기 전에 리소스를 해제하는 데 사용됩니다(예: 파일 닫기, 메모리 해제 등). 소멸자는 상속되거나 오버로드될 수 없습니다.
다음 예에서는 소멸자의 개념을 보여줍니다.
using System;
namespace LineApplication
{
class Line
{
private double length; // 线条的长度
public Line() // 构造函数
{
Console.WriteLine("对象已创建");
}
~Line() //析构函数
{
Console.WriteLine("对象已删除");
}
public void setLength( double len )
{
length = len;
}
public double getLength()
{
return length;
}
static void Main(string[] args)
{
Line line = new Line();
// 设置线条长度
line.setLength(6.0);
Console.WriteLine("线条的长度: {0}", line.getLength());
}
}
}위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.
对象已创建 线条的长度: 6 对象已删除
C# 클래스의 정적 멤버
static 키워드를 사용하여 클래스 멤버를 정적으로 정의할 수 있습니다. 클래스 멤버를 정적으로 선언하면 클래스의 개체 수에 관계없이 정적 멤버의 복사본은 하나만 남게 됩니다.
키워드 static은 클래스에 이 멤버의 인스턴스가 하나만 있음을 의미합니다. 정적 변수는 클래스의 인스턴스를 생성하지 않고 클래스를 직접 호출하여 값을 얻을 수 있기 때문에 상수를 정의하는 데 사용됩니다. 정적 변수는 멤버 함수 또는 클래스 정의 외부에서 초기화될 수 있습니다. 클래스 정의 내에서 정적 변수를 초기화할 수도 있습니다.
다음 예에서는 정적 변수의 사용법을 보여줍니다.
using System;
namespace StaticVarApplication
{
class StaticVar
{
public static int num;
public void count()
{
num++;
}
public int getNum()
{
return num;
}
}
class StaticTester
{
static void Main(string[] args)
{
StaticVar s1 = new StaticVar();
StaticVar s2 = new StaticVar();
s1.count();
s1.count();
s1.count();
s2.count();
s2.count();
s2.count();
Console.WriteLine("s1 的变量 num: {0}", s1.getNum());
Console.WriteLine("s2 的变量 num: {0}", s2.getNum());
Console.ReadKey();
}
}
}위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.
s1 的变量 num: 6 s2 的变量 num: 6
멤버 함수를 static로 선언할 수도 있습니다. 이러한 함수는 정적 변수에만 액세스할 수 있습니다. 객체가 생성되기 전에 정적 함수가 존재합니다. 다음 예에서는 정적 함수의 사용을 보여줍니다.
using System;
namespace StaticVarApplication
{
class StaticVar
{
public static int num;
public void count()
{
num++;
}
public static int getNum()
{
return num;
}
}
class StaticTester
{
static void Main(string[] args)
{
StaticVar s = new StaticVar();
s.count();
s.count();
s.count();
Console.WriteLine("变量 num: {0}", StaticVar.getNum());
Console.ReadKey();
}
}
}위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.
变量 num: 3












![PHP 실용 개발 시작하기: 빠른 PHP 생성 [중소기업 포럼]](https://img.php.cn/upload/course/000/000/035/5d27fb58823dc974.jpg)









