>  기사  >  백엔드 개발  >  [c# 튜토리얼] C# 클래스(Class)

[c# 튜토리얼] C# 클래스(Class)

黄舟
黄舟원래의
2016-12-26 14:41:361185검색

C# 클래스(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 
    }
}

참고:

액세스 지정자 ef0c5b7467e07535d850c853f8df10e3는 클래스와 해당 멤버에 대한 액세스 규칙을 지정합니다. 지정하지 않으면 기본 액세스 식별자가 사용됩니다. 클래스의 기본 액세스 식별자는 내부이고 멤버의 기본 액세스 식별자는 비공개입니다.

데이터 유형 a5814d7ec766f80b3eb820c03cf43b2d은 변수의 유형을 지정하고, 반환 유형 13f323e25e1b28c4ab81b90294e412d9은 반환된 메서드에서 반환된 데이터 유형을 지정합니다.

클래스의 멤버에 액세스하려면 점(.) 연산자를 사용하면 됩니다.

점 연산자는 개체 이름과 멤버 이름을 연결합니다.

다음 예는 지금까지 논의된 개념을 보여줍니다.

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 함수와 캡슐화

클래스의 멤버 함수는 다른 변수와 마찬가지로 클래스 정의에 자신의 정의나 프로토타입이 있는 함수입니다. 클래스의 멤버로서 클래스의 모든 개체에 대해 작동할 수 있으며 개체 클래스의 모든 멤버에 액세스할 수 있습니다.

멤버 변수는 (디자인 관점에서) 객체의 속성이며 캡슐화를 위해 비공개로 유지됩니다. 이러한 변수는 공용 멤버 함수를 통해서만 액세스할 수 있습니다.

위 개념을 사용하여 클래스에 있는 다양한 클래스 멤버의 값을 설정하고 가져옵니다.

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
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 意味着类中只有一个该成员的实例。静态变量用于定义常量,因为它们的值可以通过直接调用类而不需要创建类的实例来获取。静态变量可在成员函数或类的定义外部进行初始化。您也可以在类的定义内部初始化静态变量。

下面的实例演示了静态变量的用法:

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

 以上就是【c#教程】C# 类(Class)的内容,更多相关内容请关注PHP中文网(www.php.cn)!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.