Este artículo se transfiere de: https://www.cnblogs.com/yubinfeng/p/4552274.html
Categoría, como su nombre lo indica, significa clasificación y categoría. Si queremos una programación orientada a objetos, debemos clasificar diferentes cosas. Se puede decir que las clases son el núcleo de .net orientado a objetos.
Clase: es una colección abstracta de objetos con las mismas propiedades y funciones.
1. Definición de clase
<Modificador de acceso> clase <nombre de clase> {miembros de la clase (campos, atributos, métodos, eventos)}
Por ejemplo, por ejemplo, "humano" es una clase que puede contener atributos como género, raza, país, etc. Además de incluir atributos, también contiene algunas otras funciones, como: comer, dormir, etc., puede entenderse como un método de clase.
El código es el siguiente:
1 persona de clase 2 { 3 género de cadena pública {get; conjunto; } 4 carrera de cuerda pública {get; conjunto; } 5 cadenas públicas Country {get; conjunto; } 6 cadenas públicas Eat (string strCountry) 7 { 8 interruptores (strCountry) 9 { 10 caso "Estados Unidos": 11 12 regresan "Me encanta la comida occidental"; 13 14 caso "Corea": 15 16 devuelven "Me encanta comer kimchi"; 17 por defecto: 18 devuelven "No sé"; 19} 20} 21}
Para los modificadores de clase, se admiten los cinco modificadores de acceso descritos en la sección anterior.
Modificador de acceso |
Explicación |
público |
Acceso publico. Sin restricciones |
privado |
Acceso privado El acceso está restringido a los miembros de esta clase, y no se puede acceder a las subclases e instancias. |
protegido |
Proteger el acceso. El acceso está limitado a esta clase y subclases, y no se puede acceder a las instancias. |
interno |
Acceso interno El acceso está limitado a este proyecto, no se puede acceder a otros. |
interno protegido |
Acceso protegido internamente. El acceso está limitado a este proyecto o subcategoría, no se puede acceder a otros |
- El modificador predeterminado del espacio de nombres de clase es: public
- El modificador de acceso predeterminado para la clase es: interno
- El modificador de acceso predeterminado para los miembros de la clase es: privado
- El alcance de un miembro de la clase nunca puede exceder la clase que lo contiene
- Puede declarar una clase estática clase estática ClassName, pero todos sus miembros deben definirse explícitamente como estáticos
2. Instanciación de clase
Una instancia de una clase: es un objeto real de la clase.
<Nombre de clase> <nombre de instancia> = nuevo <nombre de clase> ([parámetro del constructor])
Por ejemplo, el humano definido anteriormente es una clase, y un individuo específico es una instancia de humano. El proceso de clase a instancia de clase se llama instanciación de clase.
Persona persona = nueva Persona ();
3. Constructor
El constructor, también llamado constructor, es el método que inicializa la clase.
Su nombre es el mismo nombre, no hay valor de retorno y no hay necesidad de anular, que se llama cuando es nuevo.
Todas las clases tienen constructores, pero C # se convertirá por defecto en un constructor sin parámetros, si no se define, se usará el predeterminado.
Si se define un constructor, no es válido por defecto.
4. Clases anidadas
C # permite el anidamiento de clases
Los tipos anidados se consideran miembros de tipos externos, por lo que los tipos anidados pueden acceder a todos los demás miembros de tipos externos.
De acuerdo con el principio de que el modificador de acceso predeterminado de los miembros de la clase es: privado, el modificador de acceso predeterminado de las clases anidadas es privado
Los tipos anidados pueden acceder libremente a miembros de tipos externos, independientemente de si esos miembros son privados. Si el tipo externo quiere acceder al tipo anidado, está sujeto a las reglas de acceso.
Con respecto a la herencia de clases anidadas (la herencia se explicará en detalle más adelante), si un tipo hereda un tipo que contiene tipos anidados, entonces naturalmente heredará los tipos anidados en el tipo base, porque ese tipo anidado en sí es la base Un miembro del tipo. Por lo tanto, siempre que el tipo anidado no sea privado o no se pueda heredar, el tipo anidado recientemente declarado en el subtipo también puede heredar ese tipo anidado.
Aquí está el código de clase anidado:
1 árbol de clase estática 2 { 3 cadena estática privada _treeLeafColor = "Green"; 4 clase estática AppleTree 5 { 6 cadena estática privada appleTreeLeaf = _treeLeafColor; 7} 8}
5. Clase distribuida
Algunas clases tienen funciones complejas, con una gran cantidad de campos, atributos, eventos, métodos e incluso miembros anidados. Si todas las definiciones de clase se escriben juntas, el archivo es enorme y las líneas de código son grandes, lo que no es fácil de entender y depurar.
Características de las clases distribuidas:
A, el mismo nombre de clase;
B, con modificador parcial;
C, con el mismo espacio de nombres;
// El nombre del archivo es partOne.cs utilizando el sistema; ejemplo de clase parcial pública { public void method1 () {} }
// El nombre del archivo es partTwo.cs utilizando el sistema; ejemplo de clase parcial pública { public void method2 () {} }
Ambos métodos pertenecen al ejemplo de clase, pero se colocan en archivos diferentes. Después de que el editor encuentra el parcial, el nombre de la clase y el espacio de nombres son los mismos, y los archivos se compilan automáticamente para formar una clase completa.
Puntos clave:
1. Las clases se pueden declarar como clases estáticas utilizando el modificador static. Después de declarar static, todos los miembros de la clase deben ser estáticos;
2. El modificador de acceso predeterminado para una clase es: interno. Cuando define una clase privada, debe agregar el modificador privado, y el modificador de acceso predeterminado para los miembros de la clase es: privado, los métodos públicos deben declararse como:
3. Convención de nomenclatura de clases: use la regla de mayúsculas de la primera letra, no use el nombre de clase del sistema o el mismo nombre que el modificador;