Clase C# (Clase)

1. Introducción

C# es un lenguaje orientado a objetos, por lo que cuando comprende qué es un objeto, ya está a mitad de camino. Los objetos son instancias de clases. Los métodos y variables que componen una clase se denominan miembros de la clase. Para dar un ejemplo simple: siempre hablamos de seres humanos y seres humanos, para que podamos tratar a las personas como una clase; y la altura, la bajeza, la gordura y la delgadez de todos pertenecen a nuestros atributos, y la capacidad de las personas para comer, hacer ejercicio, trabajar, etc. son nuestros métodos. Cuando instanciamos esta clase, se genera un objeto (persona);

2. Definición

Una definición de clase comienza con la palabra clave class seguida del nombre de la clase. El cuerpo de la clase, encerrado entre un par de llaves. La siguiente es la forma general de una definición de clase:

// <访问修饰符> class class类名
<access specifier> class  class_name
{
    // 成员属性
    <access specifier> <data type> variable1;
	// 成员方法
    <access specifier> <return type> methodN(parameter_list)
    {
        // method body
    }
}

Aviso:

  • Los identificadores de acceso especifican reglas de acceso para una clase y sus miembros. Si no se especifica, se utiliza el identificador de acceso predeterminado. El identificador de acceso predeterminado para las clases es interno y el identificador de acceso predeterminado para los miembros es privado .
  • El tipo de datos especifica el tipo de la variable y el tipo devuelto especifica el tipo de datos devuelto por el método devuelto.
  • Para acceder a los miembros de una clase, utilice el operador de punto (.).
  • El operador punto vincula el nombre del objeto y el nombre del miembro.

2.1 Modificadores de acceso para clases

  • ninguno o interno : solo se puede acceder a la clase en el proyecto actual
  • público : se puede acceder a la clase desde cualquier lugar
  • abstract o abstract interno : solo se puede acceder a la clase en el proyecto actual, no se puede crear una instancia y solo se puede usar para la herencia
  • resumen público : se puede acceder a la clase desde cualquier lugar, no se puede crear una instancia y solo se puede usar para la herencia
  • sellado o sellado interno : solo se puede acceder a la clase en el proyecto actual, no se puede usar para la derivación y solo se puede instanciar
  • público sellado : se puede acceder a la clase en cualquier lugar, no se puede usar para derivación, solo instanciada

2.2 Modificadores de acceso para miembros de clase

Todos los tipos y miembros de tipo tienen un nivel de accesibilidad. Este nivel controla si se pueden usar desde otro código en su ensamblaje o en otros ensamblajes. En pocas palabras, es el permiso de acceso de la función o propiedad actual.

  • acceso público en toda la solución.
  • protected internal es la unión de protected e internal, a la que se puede acceder si se cumple alguno.
  • protected solo permite el acceso dentro de la clase actual y en las subclases de esa clase.
  • solo se puede acceder a internal en el proyecto actual. De acuerdo con los permisos públicos en el mismo proyecto.
  • Solo se permite acceder a private en esta clase de este proyecto.

3. Miembros estáticos

Utilice la palabra clave estática para definir los miembros de la clase como estáticos. Cuando declaramos un miembro de clase como estático, significa que no importa cuántos objetos de la clase se creen, solo habrá una copia del miembro estático.

La palabra clave estática significa que solo hay una instancia del miembro en la clase. Las variables estáticas se utilizan para definir constantes porque sus valores se pueden obtener llamando a la clase directamente sin crear una instancia de la clase. Las variables estáticas se pueden inicializar fuera de la definición de una función o clase miembro. También puede inicializar variables estáticas dentro de la definición de clase.

característica:

  1. Los miembros estáticos de una clase pertenecen a la clase y no al objeto. Solo hay un miembro estático, por lo que no es propiedad de un solo objeto de la clase.
  2. Los métodos estáticos no pueden actuar sobre los objetos, y los miembros de instancia no se pueden usar directamente en métodos estáticos y se debe acceder a ellos a través de referencias de nombres de objetos, pero se puede acceder directamente a los miembros estáticos de esta clase.
  3. Se puede hacer referencia a los miembros estáticos de una clase en funciones miembro no estáticas de la clase. De lo contrario no es posible.
  4. Si se define un miembro estático en la clase principal, solo hay un miembro de este tipo en todo el sistema de herencia, sin importar cuántas subclases se deriven. Los miembros estáticos se almacenan en la zona global.
  5. Los miembros estáticos son rápidos, pero ocupan memoria, al igual que el caché de datos, debemos almacenar en caché los datos de uso frecuente.

4. Propiedades y métodos

Las propiedades de miembro son propiedades variables en una clase a las que se puede acceder y usar en funciones. Y manténgalo privado para lograr la encapsulación.

Una función miembro es una función que tiene su definición o prototipo en la definición de clase, como cualquier otra variable. Como miembro de una clase, puede operar en cualquier objeto de la clase y puede acceder a todos los miembros de la clase del objeto.

Las propiedades y los métodos de miembros creados a través de diferentes modificadores de acceso tienen diferentes ámbitos de acceso. Esto requiere una comprensión profunda de los modificadores de acceso.

5. Constructor

Un constructor es una función miembro especial de una clase que se ejecuta cuando se crea un nuevo objeto de la clase. El nombre del constructor es exactamente igual al nombre de la clase , no tiene ningún tipo de retorno.

Nota: el constructor predeterminado no tiene ningún parámetro. Pero si necesita un constructor con parámetros que puedan tener parámetros, este tipo de constructor se denomina constructor parametrizado .

class Person
{
	// 参数化构造函数
	public Person(string serial)
	{
     	Console.WriteLine("编号:{0}人类已创建", serial);
    }
}

6. Destructor

Un destructor es una función miembro especial de una clase que se ejecuta cuando un objeto de la clase queda fuera del alcance. El nombre del destructor tiene como prefijo una tilde (~) antes del nombre de la clase, no devuelve un valor y no toma ningún parámetro.

Los destructores se utilizan para liberar recursos antes de finalizar el programa (como cerrar archivos, liberar memoria, etc.). Los destructores no se pueden heredar ni sobrecargar.

class Person
{
	// 参数化构造函数
	public Person(string serial)
	{
     	Console.WriteLine("编号:{0}人类已创建", serial);
    }
    // 析构函数
	~Person()
	{
     	Console.WriteLine("当前人类已消失!");
    }
}

7. Herencia

La herencia es uno de los conceptos más importantes en la programación orientada a objetos. La herencia nos permite definir una clase en términos de otra, lo que facilita la creación y el mantenimiento de aplicaciones. También facilita la reutilización del código y ahorra tiempo de desarrollo.

Al crear una clase, el programador no necesita reescribir por completo los nuevos miembros de datos y las funciones de los miembros, sino que solo necesita diseñar una nueva clase que herede los miembros de la clase existente. Esta clase existente se denomina clase base y esta nueva clase se denomina clase derivada .

7.1 Clases base y derivadas

Una clase se puede derivar de varias clases o interfaces, lo que significa que puede heredar datos y funciones de varias clases base o interfaces.

class <派生类名称> : <基类名称>

7.2 Inicialización de la clase base

La clase derivada hereda las variables miembro y los métodos miembro de la clase base. Por lo tanto, el objeto de la clase principal debe crearse antes de que se cree el objeto de la clase secundaria. Puede realizar la inicialización de la clase principal en la lista de inicialización de miembros.

using System;
namespace testDemo
{
   class Rectangle
   {
      // 成员变量
      protected double length;
      protected double width;
      public Rectangle(double l, double w)
      {
         length = l;
         width = w;
      }
      public double GetArea()
      {
         return length * width;
      }
      public void Display()
      {
         Console.WriteLine("长度: {0}", length);
         Console.WriteLine("宽度: {0}", width);
      }
   }
   class Tabletop : Rectangle
   {
      private double cost;
      public Tabletop(double l, double w) : base(l, w)
      { }
      public double GetCost()
      {
         double cost;
         cost = GetArea() * 70;
         return cost;
      }
      public void Display()
      {
         base.Display();
         Console.WriteLine("成本: {0}", GetCost());
      }
   }
   class ExecuteRectangle
   {
      static void Main(string[] args)
      {
         Tabletop t = new Tabletop(4.5, 7.5);
         t.Display();
         Console.ReadLine();
      }
   }
}

7.3 Herencia múltiple

La herencia múltiple se refiere a la capacidad de una clase para heredar el comportamiento y las características de más de una clase principal al mismo tiempo. A diferencia de la herencia única, la herencia única significa que una clase solo puede heredar de una clase principal.

C# no admite la herencia múltiple . Sin embargo, puede usar interfaces para lograr herencia múltiple. El siguiente programa demuestra esto:

class Shape
{
  public void setLen(int w, int h)
  {
     width = w;
     height = h;
  }
  protected int width;
  protected int height;
}

// 基类 PaintCost
public interface PaintCost
{
   int getCost(int area);

}
// 派生类
class Rectangle : Shape, PaintCost
{
  public int getArea()
  {
    return (width * height);
  }
  public int getCost(int area)
    {
       return area * 70;
    }
   }
class RectangleTester
{
  static void Main(string[] args)
  {
     Rectangle Rect = new Rectangle();
     int area;
     Rect.setLen(55);
     area = Rect.getArea();
     // 打印对象的面积
     Console.WriteLine("面积: {0}",  Rect.getArea());
     Console.WriteLine("成本: ${0}" , Rect.getCost(area));
     Console.ReadKey();
  }
}

Supongo que te gusta

Origin blog.csdn.net/IO14122/article/details/126229237
Recomendado
Clasificación