Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык 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
   }
}

Примечание —

Следующий пример иллюстрирует концепции, обсуждавшиеся до сих пор —

Живая демонстрация
using System;

namespace BoxApplication {
   class Box {
      public double length;   // Length of a box
      public double breadth;  // Breadth of a box
      public double height;   // Height of a box
   }
   class Boxtester {
      static void Main(string[] args) {
         Box Box1 = new Box();   // Declare Box1 of type Box
         Box Box2 = new Box();   // Declare Box2 of type Box
         double volume = 0.0;    // Store the volume of a box here

         // box 1 specification
         Box1.height = 5.0;
         Box1.length = 6.0;
         Box1.breadth = 7.0;

         // box 2 specification
         Box2.height = 10.0;
         Box2.length = 12.0;
         Box2.breadth = 13.0;
           
         // volume of box 1
         volume = Box1.height * Box1.length * Box1.breadth;
         Console.WriteLine("Volume of Box1 : {0}",  volume);

         // volume of box 2
         volume = Box2.height * Box2.length * Box2.breadth;
         Console.WriteLine("Volume of Box2 : {0}", volume);
         Console.ReadKey();
      }
   }
}

Когда приведенный выше код скомпилирован и выполнен, он дает следующий результат —

Volume of Box1 : 210
Volume of Box2 : 1560

Функции-члены и инкапсуляция

Функция-член класса — это функция, определение или прототип которой находится в определении класса, подобно любой другой переменной. Он работает с любым объектом класса, членом которого он является, и имеет доступ ко всем членам класса для этого объекта.

Переменные-члены являются атрибутами объекта (с точки зрения дизайна), и они остаются закрытыми для реализации инкапсуляции. Доступ к этим переменным можно получить только с помощью общедоступных функций-членов.

Давайте поместим вышеприведенные концепции, чтобы установить и получить значение разных членов класса в классе —

Живая демонстрация
using System;

namespace BoxApplication {
   class Box {
      private double length;   // Length of a box
      private double breadth;  // Breadth of a box
      private double height;   // Height of a box
      
      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();   // Declare Box1 of type Box
         Box Box2 = new Box();
         double volume;
         
         // Declare Box2 of type Box
         // box 1 specification
         Box1.setLength(6.0);
         Box1.setBreadth(7.0);
         Box1.setHeight(5.0);
         
         // box 2 specification
         Box2.setLength(12.0);
         Box2.setBreadth(13.0);
         Box2.setHeight(10.0);
         
         // volume of box 1
         volume = Box1.getVolume();
         Console.WriteLine("Volume of Box1 : {0}" ,volume);
         
         // volume of box 2
         volume = Box2.getVolume();
         Console.WriteLine("Volume of Box2 : {0}", volume);
         
         Console.ReadKey();
      }
   }
}

Когда приведенный выше код скомпилирован и выполнен, он дает следующий результат —

Volume of Box1 : 210
Volume of Box2 : 1560

Конструкторы C#

конструктор класса — это специальная функция-член класса, которая выполняется всякий раз, когда мы создаем новые объекты этого класса.

Конструктор имеет то же имя, что и класс, и не имеет возвращаемого типа. Следующий пример объясняет концепцию конструктора —

Живая демонстрация
using System;

namespace LineApplication {
   class Line {
      private double length;   // Length of a line
      
      public Line() {
         Console.WriteLine("Object is being created");
      }
      public void setLength( double len ) {
         length = len;
      }
      public double getLength() {
         return length;
      }

      static void Main(string[] args) {
         Line line = new Line();    
         
         // set line length
         line.setLength(6.0);
         Console.WriteLine("Length of line : {0}", line.getLength());
         Console.ReadKey();
      }
   }
}

Когда приведенный выше код скомпилирован и выполнен, он дает следующий результат —

Object is being created
Length of line : 6

конструктор по умолчанию не имеет параметров, но если вам нужно, конструктор может иметь параметры. Такие конструкторы называются параметризованными конструкторами. . Этот метод помогает вам присвоить начальное значение объекту во время его создания, как показано в следующем примере —

Живая демонстрация
using System;

namespace LineApplication {
   class Line {
      private double length;   // Length of a line
      
      public Line(double len) {  //Parameterized constructor
         Console.WriteLine("Object is being created, 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("Length of line : {0}", line.getLength()); 
         
         // set line length
         line.setLength(6.0);
         Console.WriteLine("Length of line : {0}", line.getLength()); 
         Console.ReadKey();
      }
   }
}

Когда приведенный выше код скомпилирован и выполнен, он дает следующий результат —

Object is being created, length = 10
Length of line : 10
Length of line : 6

Деструкторы C#

деструктор — это специальная функция-член класса, которая выполняется всякий раз, когда объект этого класса выходит за пределы области видимости. деструктор имеет точно такое же имя, как и у класса с префиксом тильды (~), и он не может ни возвращать значение, ни принимать какие-либо параметры.

Деструктор может быть очень полезен для освобождения ресурсов памяти перед выходом из программы. Деструкторы не могут быть унаследованы или перегружены.

Следующий пример объясняет концепцию деструктора —

Живая демонстрация
using System;

namespace LineApplication {
   class Line {
      private double length;   // Length of a line
      
      public Line() {   // constructor
         Console.WriteLine("Object is being created");
      }
      ~Line() {   //destructor
         Console.WriteLine("Object is being deleted");
      }
      public void setLength( double len ) {
         length = len;
      }
      public double getLength() {
         return length;
      }
      static void Main(string[] args) {
         Line line = new Line();

         // set line length
         line.setLength(6.0);
         Console.WriteLine("Length of line : {0}", line.getLength());           
      }
   }
}

Когда приведенный выше код скомпилирован и выполнен, он дает следующий результат —

Object is being created
Length of line : 6
Object is being deleted

Статические члены класса 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("Variable num for s1: {0}", s1.getNum());
         Console.WriteLine("Variable num for s2: {0}", s2.getNum());
         Console.ReadKey();
      }
   }
}

Когда приведенный выше код скомпилирован и выполнен, он дает следующий результат —

Variable num for s1: 6
Variable num for s2: 6

Вы также можете объявить функцию-член как статический . Такие функции могут обращаться только к статическим переменным. Статические функции существуют еще до создания объекта. В следующем примере демонстрируется использование статических функций. −

Живая демонстрация
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("Variable num: {0}", StaticVar.getNum());
         Console.ReadKey();
      }
   }
}

Когда приведенный выше код скомпилирован и выполнен, он дает следующий результат —

Variable num: 3

Язык C

  1. Класс и объект С#
  2. Модификаторы доступа C#
  3. C# статическое ключевое слово
  4. Абстрактный класс и метод С#
  5. Вложенный класс С#
  6. Классы и объекты С++
  7. C — Классы хранения
  8. Классы хранения в C++
  9. Интерфейсы в C++ (абстрактные классы)
  10. С# — Структура программы