Cómo entender la programación orientada a objetos
[Cita] 1. Conceptos básicos:
1.1 Una exploración preliminar de clases y objetos
Si me preguntas, si es un lenguaje orientado a procesos o un lenguaje orientado a objetos, lo primero que quiero decirle es ¡Son clases y objetos! -------- "¿De qué está hecho este mundo?" Si le pides a diferentes personas que respondan esta pregunta, obtendrás diferentes respuestas. Si es químico, es posible que le diga: "¿Por qué molestarse en preguntar? El mundo está formado por sustancias químicas como moléculas, átomos, iones, etc." ¿Y si eres pintor? Podría decirte: "El mundo está hecho de diferentes colores". ...Jaja, ¡hay diferentes opiniones! Pero sería mucho más interesante si dejaras que un taxónomo piense en el problema. Él te dirá que "el mundo está formado por diferentes tipos de cosas y ¡Bien!". Como programadores orientados a objetos, ¡debemos considerar el problema desde la perspectiva de un taxónomo! Sí, este mundo está formado por animales, plantas, etc. Los animales se dividen a su vez en animales unicelulares, animales multicelulares, mamíferos, etc. Los mamíferos se dividen a su vez en humanos, elefantes, tigres... ¡y así sucesivamente!
Ahora, desde una perspectiva abstracta, ¡definamos “clase”! Quiero decir, desde un punto de vista abstracto, usted me responde "¿Qué es un ser humano?" Primero echemos un vistazo a algunas de las características de los seres humanos. Esta característica incluye atributos (algunos parámetros, valores) y métodos (algunos comportamientos). , otro ¡Qué puedes hacer tú!). Todo el mundo tiene atributos como altura, peso, edad, tipo de sangre, etc. Las personas pueden trabajar, pueden caminar erguidas, pueden usar sus propias mentes para crear herramientas, ¡y así sucesivamente! La razón por la que los humanos se pueden distinguir de otros tipos de animales es que cada uno tiene los atributos y métodos del grupo humano. ¡La "humanidad" es sólo un concepto abstracto, es sólo un concepto, es una entidad inexistente! ¡Pero todos los objetos con los atributos y métodos del grupo "humano" se llaman personas! ¡Este objeto "persona" es una entidad real! Cada uno es un objeto del grupo de personas. ¿Por qué los tigres no son humanos? ¡Porque no tiene los atributos y métodos del grupo humano, los tigres no pueden caminar erguidos, no pueden utilizar herramientas, etc.! ¡Entonces los tigres no son humanos!
Se puede observar que una clase describe un grupo de objetos con las mismas características (propiedades) y el mismo comportamiento (métodos). ¡En los programas, las clases son en realidad tipos de datos! Por ejemplo: números enteros, decimales, etc. Los números enteros también tienen un conjunto de propiedades y comportamientos. La diferencia entre los lenguajes orientados a procesos y los lenguajes orientados a objetos es que los lenguajes orientados a procesos no permiten a los programadores definir tipos de datos por sí mismos, ¡sino que solo pueden usar los tipos de datos integrados en el programa! Para simular el mundo real y resolver mejor los problemas, a menudo necesitamos crear los tipos de datos necesarios para resolver el problema. La programación orientada a objetos nos proporciona una solución.
1.2 Tipos de datos y funciones integrados:
Los programas informáticos deben realizar un seguimiento de tres atributos básicos al almacenar datos:
1. Dónde se almacena la información;
2. ¿Cuál es el valor almacenado?
3. Qué tipo de información se almacena;
¡Echemos un vistazo a los tipos de datos integrados de los lenguajes de programación! (Jaja, esto es difícil de decir, porque cada idioma tiene su propio tipo de datos único, pero después de todo, son una minoría. Por ejemplo, hay datos de tipo byte en JAVA, pero no en C. ¡Espero que puedas hacer inferencias! ) Por ejemplo, entero "int", datos de tipo punto flotante "float". Cadena "Cadena", así como matrices y estructuras, etc. Sin embargo, al escribir un programa, crearemos un tipo de variable o constante según sea necesario. Por ejemplo: dado que necesitamos crear una variable entera i como 5, podemos hacer esto, int i = 5 y según sea necesario, tengo. Es posible cambiar el valor de i, es decir, reasignarlo, por ejemplo, dejarlo igual a 6 y luego cambiarlo a i = 6 cuando sea necesario. De esto sabemos que la cantidad que puede cambiar en el "valor; "se llama variable.
Una cantidad que no cambia se llama constante y se declara utilizando la palabra clave count en C y la palabra clave final en JAVA. Dado que los formatos de declaración en diferentes idiomas son diferentes, no los presentaré uno por uno aquí. Consulte los libros relevantes para obtener contenido detallado.
Aquí analizamos principalmente las funciones. Podemos pensar en las funciones como una "caja negra que implementa una función específica" ------- Esta función la configura usted Por ejemplo: Ahora yo. preguntarte "¿A qué es igual 2 3"? Creo que puedes responderme rápidamente igual a 5. ¡Analicemos qué información contiene esta frase! En primer lugar, quiero imaginar tu cerebro como una caja negra. No sé ni necesito saber cómo funciona tu cerebro (es decir, cómo calcula). Lo único que me importa es a qué información le envío. ¿tú? ¿Qué hiciste con la información? ¿Y qué información me devolviste? Debo recordarles que cada método devolverá un mensaje a la persona que llama, excepto el constructor (lo presentaré en detalle más adelante). Ahora necesito considerarme un programador, ¿y tú? ¡Por supuesto que es una computadora! Nadie es tan inteligente cuando se trata de cálculos. Solo se ejecutará en un formato específico que se haya acordado de antemano. Si quiero que tenga las funciones mencionadas anteriormente, ¡primero tengo que definir este cuadro negro! Primero, tengo que decirle al cuadro negro que habrá dos valores enteros para usted (este es el llamado parámetro, que es la información que el programador debe darle al cuadro negro), y luego necesito para definir la operación interna de la caja negra para implementar la suma de estos dos números enteros (esto es La caja negra realiza cualquier procesamiento de los datos de acuerdo con sus necesidades). Finalmente, márcalo y devuélveme un valor que también sea un número entero (esta es la información que el cuadro negro devuelve al programador). Una función ha sido definida de esta manera, echemos un vistazo al formato de escritura:
int addnum(int x, int y){
return x y;
}
El significado específico es el siguiente:
int /*Tipo de valor de retorno*/ addnum /*Nombre del método (cuadro negro)*/ (int x, int y /*Parámetros entrantes*/){
return x y; /*El método interno es implementar la operación de suma y usar return para devolver el resultado a la persona que llama*/
}
En primer lugar, preste atención a la declaración de "devolución" anterior. ¡El significado de la palabra clave return es devolver la información inmediatamente posterior a la persona que llama! Igual que arriba, me responderás porque te pregunto, si no te pregunto, ¡no tienes que responderme! Lo mismo ocurre en las computadoras. ¿Dónde debería llamarse esta función? Sólo te puedo decir, ¡llámalo donde lo necesites! Por supuesto, puede cambiar los parámetros, los valores de retorno y la implementación interna según sea necesario. Para obtener detalles específicos sobre cómo definir y llamar, debe consultar la información relevante. ¡Solo te estoy dando una idea aquí!
A veces te encontrarás con un problema así, ¡te pido que recuerdes que mi edad es 20 años! ¡Literalmente, no me devolviste ninguna información! Sin embargo, de hecho, me devolvió información y el contenido de la información era "sin información, es decir, sin valor de retorno nulo".
El procedimiento específico es el siguiente:
int myAge = 0
int a=20
void remAge(int a){
myAge=a;
}
La descripción de la función específica es la siguiente:
int myAge =0 //Definir e inicializar mi edad a 0; ;
int myAge=a;
}
p>
int a=20; /*Definir variable a igual a 20*/ p>
void /*El tipo de valor de retorno es un tipo de valor sin retorno*/ remAge /*Nombre de la función*/(int a / *Parámetros entrantes*/){
myAge=a; // Método de implementación interna, ¡tenga en cuenta que no hay retorno! ! !
}
Hay muchos más temas sobre funciones, así que no los presentaré uno por uno aquí. ¡Mi propósito es hacerles saber cómo son las funciones! ¡Allana el camino para la siguiente discusión!
1.3 Punteros y referencias:
Los punteros y referencias están disponibles en C pero no en JAVA. En JAVA se ha cancelado la operación de memoria y posteriormente también se ha cancelado la operación de sobrecarga de operadores. Sin embargo, presentaré algunas funciones de sobrecarga de operadores más adelante. Las referencias se utilizan principalmente para pasar parámetros de funciones. Así que no daré demasiada introducción aquí. Son muy prácticos y los estudiantes interesados pueden consultar libros relacionados con C.
1.4 Operadores y declaraciones de control:
Es mejor leer los libros relevantes usted mismo, ¡no entraré en detalles aquí!
2. Exploración en profundidad de la orientación a objetos:
2.1 Detalles internos de "tipo":
Con el conocimiento anterior, ahora podemos profundizar en la implementación interna de la clase. Todos los puntos de conocimiento en los que me centraré son clases y objetos. Antes de eso, espero que pueda estar seguro de haber dominado completamente el contenido básico presentado anteriormente.
Sí, la característica más importante de los lenguajes de programación orientados a objetos es que puedes escribir los tipos de datos que necesitas para resolver mejor los problemas. ¡Creo que tengo que ayudarte a descubrir "la relación entre clases, objetos, propiedades y métodos"! Como dije antes, la "categoría" de seres humanos no puede hacer nada, porque "seres humanos" son sólo un concepto abstracto, no es una "cosa" real, y esta "cosa" es el llamado objeto. Sólo el ser humano "objeto" puede trabajar. ¿Qué pasa con las clases? ¡Las clases son descripciones de objetos! ¡Los objetos se generan a partir de clases! En este momento, el objeto tiene todas las propiedades y métodos descritos por la clase. -------¡Debes entender esta frase! ! !
Tal vez estés un poco abrumado, ¡está bien! ¡Piénsalo por un momento y déjame darte otro ejemplo! Por ejemplo, un televisor tiene un diagrama de principio de funcionamiento, entonces, ¿qué es un televisor? Siempre que pueda realizar todas las funciones del diagrama esquemático de funcionamiento, lo llamamos televisor. ¿Crees que este es el caso? Sin embargo, el diagrama esquemático del televisor no puede funcionar, es decir, este diagrama esquemático no puede ver programas. Sólo la "entidad, el llamado objeto" del televisor, puede ver el programa. La clase se puede ver. ¡Es realmente significativo! para empezar a trabajar. En este punto, el televisor tiene todos los atributos y métodos descritos en el diagrama esquemático del televisor. ¡Entendido, jaja!
Como ya he introducido antes, una clase es una colección de propiedades y métodos. Estas propiedades y métodos pueden declararse como privados, públicos o protegidos y describen el control de acceso a los miembros de la clase. Permítanme presentarles cada uno a continuación:
1. Público: después de declarar la variable como de tipo público, se puede acceder a ella directamente a través del objeto y ¡todo queda expuesto! En otras palabras, otras personas también pueden obtener directamente la contraseña de su tarjeta de crédito.
2. Privado: Sería mucho mejor si la variable se declarara privada. Si quiero obtener la contraseña de mi tarjeta de crédito, el objeto debe llamar a un método dedicado para obtenerla.
3. Protegido: Discutido cuando se introduce la herencia.
4. Accesor de control predeterminado (amigable): //Está disponible en JAVA pero no en C.
Para lograr la encapsulación de datos y mejorar la seguridad de los datos, generalmente declaramos los atributos de la clase como privados y los métodos de la clase como públicos. De esta manera, el objeto puede llamar directamente a todos los métodos definidos en la clase. Cuando el objeto quiere modificar u obtener sus propias propiedades, debe llamar al método especial definido para lograrlo. Piénselo, ¿revelaría la contraseña de su tarjeta de crédito? jeje! Por lo tanto, lo que defendemos es: "Los objetos ajustan los métodos y los métodos cambian los atributos";
2.2 Mire la asignación de memoria a través de ejemplos:
Habiendo dicho todo esto, veamos un ejemplo. ! Por ejemplo: ahora vamos a escribir un sistema de gestión de empleados para una determinada empresa. ¿Cuál crees que es el tipo de datos más apropiado? ¡Creo que son los empleados individuales! Pero en un lenguaje procedimental, esto no está permitido, porque ¡solo se pueden usar los tipos de datos internos del lenguaje! ¡Y los empleados no están incluidos en este tipo de datos internos! Algunas personas pueden decir que puedes usar struct en lenguaje C, ¡así que ten cuidado! ¡Después de todo es la base de las clases! Si ha sido programador frente a C o B antes, ¡olvídese de esto y déjenos ver cómo usar las clases para lograr todo esto!
Los empleados de una determinada empresa son un grupo especial de humanos, además de tener todas las características y métodos de los humanos, también tienen características y métodos adicionales, como su salario, contraseña de tarjeta de crédito y horario. Tiempo, etc., estas características, así como el contenido del trabajo, la carga de trabajo, etc., y estos métodos. ¿Y cómo deberíamos definir esta clase en la computadora? ¡Escribiré su formato a continuación para que puedas ver cómo se ve en la computadora!
/*Lo que necesito decir nuevamente es que uso el formato JAVA, que es muy diferente de C en términos de formato de sintaxis. Hay muchas diferencias en los detalles y las operaciones internas, pero las ideas son realmente similares*/
//employee.java
empleado de clase pública{
cadena privada nombre; //nombre del empleado
edad int privada; //edad del empleado
sexo del empleado; //género del empleado
emolumento flotante privado; salario
almuerzo booleano privado; //almuerzo del empleado
//...etc.
calentador vacío público(){ //Este método se utiliza Proceso almuerzo de los empleados
lunch = true;
}
public void setName(String a){ //Este método es para modificar el nombre del empleado
name= a;
}
public String getName(){ //Este método es para obtener el nombre del empleado
return name;
p>}
//...y así sucesivamente
}
De esta forma hemos definido el tipo de datos que necesidad.
¡Ahora veamos qué hace y cómo funciona!
Lo que quiero hacer es que hay un comandante pulido llamado "jingwei" en el estudio, modifico su nombre y luego lo envío, ¡mira qué hago!
Nota: observe atentamente cómo el objeto llama al método, ¡usa el operador "." De hecho, este es el caso. El operador "." se utiliza cuando un objeto llama a una propiedad o método público.
Sin embargo, en C, si define un puntero del mismo tipo y el puntero llama a un método de este objeto, se utilizará el operador "-gt;". Para obtener información más detallada, consulte los libros pertinentes.
//workstation.java
importar java.awt.Graphics
importar java.applet.Applet
estación de trabajo de clase pública; extends Applet{
empleado privado jingwei; // ¡La declaración del objeto no asigna memoria en este momento!
public void init(){
jingwei = new Employee() /*La creación del objeto en este momento llamará al constructor, que se presentará más adelante*/
jingwei.setName("jw"); //Establecer mi nombre
}
public void paint(Gráficos g){
g. drawString(" mi edad es " jingwei.getName(), 10, 10 // Mostrar mi edad
}
}
El resultado de salida es :
} p>
mi nombre es jw
Esta cadena está en la posición donde el eje de coordenadas x de la ventana de salida es 10 px y el eje de coordenadas y es de 10 píxeles.
¡Lo que quiero hacer ahora es hacer una gran disección del programa anterior para que puedas ver claramente de qué se trata! (Puedo llevarte a ver el ensamblaje por dentro de vez en cuando, jaja, tampoco sé cómo hacerlo :)
Primero, echemos un vistazo a nuestro tipo de datos personalizado empleado. aplicado, es lo mismo que el tipo int. Los datos no son diferentes. Todavía necesitamos crear variables (objetos), pero el primero lo definimos nosotros mismos y el segundo está integrado. Hay muchos atributos y métodos en la clase Empleado. En este momento, no podemos usar directamente el objeto que creamos para llamar a sus propiedades y modificarlas. ¡Porque es un tipo privado protegido! Si quiero cambiar mi nombre, tengo que usar el objeto para llamar al método setName(), y si quiero obtener mi nombre, tengo que llamar al método getName(). Estamos siguiendo completamente la ruta, y esta ruta es "los objetos ajustan los métodos y los métodos cambian los atributos"
¡Bien, realmente creo que entiendes de qué se trata todo esto! jeje! ¡Levanten las velas y sigan avanzando!
Ahora echemos un vistazo a la clase de estación de trabajo. Esta es una clase principal, similar a la función main() en C. Entre ellos, en JAVA, solo se permite un archivo y debe tener una clase principal, ¡y esta clase principal se declara pública! Es lo mismo que debe haber una función main() en C.
¡Echemos un vistazo a la primera afirmación de esta clase! empleado privado jingwei; la función de esta declaración es declarar un objeto de empleado jingwei (no es necesario declararlo en C). De lo que quiero hablarles es de la diferencia entre "declaración" y "definición".
La declaración simplemente le dice a la computadora que habrá dicha variable (objeto), ¡no asigna memoria para esta variable (objeto) en la memoria! La memoria se asigna a esta variable (objeto) solo cuando está definida. (Cabe señalar que el método init() completa la operación de inicialización. El objeto se define aquí y se asigna memoria para el objeto. El método start() se utiliza para iniciar el hilo principal del navegador y paint() El método se utiliza para mostrar la interfaz de Apple. Estos son requeridos por el programa Applet, pero no por el programa de aplicación. Por supuesto, no son necesarios en C. Consulte los libros relevantes para obtener más detalles)
Luego. Comience a definir un objeto, será de importancia práctica operar en el objeto jingwei. Nunca pienses así: "¡Tratando de operar en clases!" Como dije antes, ¡el principio de un televisor es el mismo que mirar televisión! ¡Esto no tiene sentido! Mire esta declaración jingwei = nuevo empleado(); significa definir un objeto jingwei de tipo empleado. En este momento, lo que quiero decirles es: "¿Qué quiere tener Jingwei?" Tiene todas las propiedades y métodos descritos por la clase. Los enumeraré uno por uno a continuación:
/*Todos los objetos de empleado tienen estos atributos. Cada vez que se crea un objeto, se asigna una nueva porción de memoria para almacenar estas propiedades del objeto correspondiente. Lo que quiero decir es que cada objeto tiene su propia copia "única"*/
private String name; //Nombre del empleado
private int age; //Edad del empleado p>
sexo de carácter privado; //Género del empleado
emolumento flotante privado; //Salario del empleado
almuerzo booleano privado; //Almuerzo del empleado
/* Todos los objetos de empleado tienen estos métodos. Pero solo hay una copia en la memoria */
public void Heater(){ //Este método se utiliza para procesar el almuerzo de los empleados
lunch = true;
}
public void setName(String a){ //Este método es para modificar el nombre del empleado
name= a;
} p>
public String getName(){ //Este método es para obtener el nombre del empleado
return name;
}
/*Sin embargo, de hecho, al crear un objeto jingwei, la computadora solo asigna memoria a todas las propiedades de este objeto, pero no asigna memoria a los métodos. Solo hay un método, que pertenece a todos los objetos, por lo que no importa cuántos objetos se creen, la computadora solo asignará una parte de la memoria para un método. */
Supongo que te daré un ejemplo, de lo contrario tendrás que desmayarte. jeje!
Mire mi declaración "almuerzo booleano privado"; a la empresa no le importa el almuerzo y todos los empleados deben traer comida. Pensémoslo ahora, el espacio de la empresa es toda la capacidad de memoria, y su escritorio es parte de la memoria de la computadora (cada empleado tiene una copia, que se asigna cuando se crea el objeto). Trajiste tu almuerzo al trabajo y lo pusiste en tu escritorio. El "almuerzo" ocupa un rincón de tu escritorio (y una parte de la memoria para tu propio "objeto"). ¡Este almuerzo te pertenece solo a ti y el almuerzo de los demás solo le pertenece a ella! Entonces cada empleado (objeto) necesita mucho espacio (memoria) para almacenar su almuerzo (atributo).
Lo mismo ocurre en las computadoras. Cada vez que se crea un objeto, se asignará una nueva porción de memoria en la memoria para contener el atributo "almuerzo" (todos los atributos que posee el objeto).
El ordenador asigna memoria sólo para las propiedades del objeto. ¡Porque cada objeto es diferente! ¡Al igual que el almuerzo que traes a la empresa es diferente del almuerzo que yo llevo a la empresa! Pero el método es diferente. La comida que trajiste por la mañana estará fría al mediodía, por lo que deberás calentarla en el microondas. No es necesario traer microondas, la empresa tiene uno (solo ocupa espacio en la empresa) y se coloca en la mesa del almuerzo. Piénsalo, ¿a quién pertenece el horno microondas? ¡Pertenece a todos los empleados! Porque todos los empleados pueden utilizarlo. En lugar de que cada empleado tenga que traer uno. Se puede ver que cada empleado (objeto) tiene un almuerzo (atributo), pero todos los empleados (objeto) solo tienen un horno microondas (método). Todos los empleados (objetos) pueden utilizar este horno microondas (método) para cambiar el estado frío o caliente de su almuerzo (atributo). ¡Diversos caminos conducen al mismo destino! Este es el caso de las computadoras, ¡solo hay un método para que lo utilicen todos los objetos! Los atributos son uno para cada objeto, porque cada objeto es diferente. No me digas que todavía no lo entiendes, de lo contrario me estrellaré contra la pared, jaja :)
2.3 Discusión en profundidad de funciones:
2.3.1 Constructor, constructor predeterminado, función constructor predeterminada
Para el ejemplo anterior, ya puede completar la mayor parte del trabajo, pero aún es imperfecto y todavía hay muchos detalles esperando que los perfeccionemos. Quizás algunos estudiantes hayan notado que cuando creé el objeto "jingwei", todos los atributos de este objeto estaban vacíos, es decir: el nombre de este objeto es indeterminado, la edad es indeterminada y el género es indeterminado. El salario está indeciso y el almuerzo también está indeciso. Si queremos agregar todos estos atributos, ¡tenemos que usar el objeto para llamar al método correspondiente y modificarlos uno por uno! ¡Dios, esto es una molestia! ¿Existe alguna buena forma de completar la asignación de atributos mientras creamos el objeto? Oh no, ¿debería decirse que es la inicialización de atributos? ¡Por supuesto que no hay problema, esto requiere el llamado constructor!
¡El constructor es la función más especial de la clase y su función es exactamente opuesta a la del destructor!
En cuanto a características: 1. Es la única función en un lenguaje de programación que no tiene un tipo de valor de retorno.
2. Su nombre debe ser exactamente igual al nombre de la clase.
3. Debe declararse como tipo público
4. El constructor puede estar sobrecargado.
5. Se llama automáticamente al crear un objeto.
Funcionalmente: 1. Inicializa los atributos de la clase.
De hecho, para el programa anterior, no definimos el constructor nosotros mismos. Sin embargo, en este caso, el sistema define automáticamente un "constructor predeterminado" para nosotros. Automáticamente asignará variables numéricas a 0, variables de fila booleanas a falso, etc. (pero en C, el constructor predeterminado no inicializa sus miembros). Si el programador define un constructor, el sistema ya no agregará un constructor predeterminado a su programa.
(Aquí recomendamos definir su propio constructor en lugar de utilizar el constructor predeterminado del sistema)
¡Veamos un ejemplo! ¡Esto lo deja más claro!
//employee.java
empleado de clase pública{
nombre de cadena privada; //nombre del empleado
edad privada int /; /Edad del empleado
private char sex; //Género del empleado
emolumento flotante privado; //Salario del empleado
almuerzo booleano privado //Almuerzo del empleado
p>//...y así sucesivamente
public Employee(){ //Este es el constructor "predeterminado"
name = "jw" //Set; el nombre del empleado
edad = 20; //Establecer la edad del empleado
sexo = "M"; //Establecer el sexo del empleado
emolumento = 100; Establecer el salario de los empleados
lunch = false; //Establecer el almuerzo de los empleados
}
public void Heater(){ //Este método se utiliza para procesar el almuerzo de los empleados. p>
almuerzo = verdadero;
}
//...y así sucesivamente
}; De esta manera, en nuestro Cuando se crea el objeto "jingwei", ¡también se inicializan todas sus propiedades! Obviamente, esto mejora enormemente la eficiencia del trabajo, pero aún no cumple con los requisitos. Piénselo, ¿qué pasaría si ahora creáramos un segundo objeto de este tipo? Déjame decirte que, excepto el "nombre" del objeto (este nombre ya no es el nombre en los atributos del objeto, sino el nombre del objeto en sí), ¡todos sus "valores de atributo" son iguales! Por ejemplo: ahora creamos el segundo objeto flashmagic, pero encontraré que todas las propiedades de este objeto son exactamente las mismas que todas las propiedades del objeto jingwei. ¡Y solo podemos usar métodos de objetos para cambiar y escribir atributos! ¡Obviamente este método no es bueno! Necesitamos una forma de asignar "los valores que queremos" a las propiedades del objeto al crear el objeto.
Creo que también has visto que el constructor predeterminado no tiene poder.
Lo que necesitamos es un constructor con parámetros. Al crear un objeto, pasamos los parámetros al constructor para que se puedan completar las funciones anteriores. No hay pruebas, veamos un ejemplo:
//employee.java
public class empleado{
private String nombre //empleado; nombre
private int age; //Edad del empleado
private char sex; //Género del empleado
emolumento flotante privado //Salario del empleado
almuerzo booleano privado; // almuerzo del empleado
//...y así sucesivamente
empleado público(String n, int a, char s, float e, boolean l ){ //Mira este constructor
nombre = n; //Establecer nombre del empleado
edad = a //Establecer edad del empleado
sexo = s; ; // Establecer el género del empleado
emolument = e; //Establecer el salario del empleado
almuerzo =l //Establecer el almuerzo del empleado
}
public void Heater(){ //Este método se utiliza para procesar el almuerzo de los empleados
lunch = true;
}
//.. .y así sucesivamente
};
De esta forma podemos asignar el valor que queramos al objeto mientras lo creamos. Obviamente esto es mucho más conveniente. ¡Ah, claro! ¡Aún no te he dicho cómo crearlo! Jaja, avance algunas páginas y verá esta oración:
jingwei = new empleado(); Esto crea un objeto y lo cambiamos a
jingwei = nuevo empleado( "jingwei", 20, 'M', 100, false); De esta forma se completa todo el trabajo, ¡jaja! (Mientras creamos el objeto, le damos el "valor inicial" que queremos)
2.3.2 Sobrecarga del constructor:
Déjame darte el concepto primero y dejarte Hay un entendimiento, y lo discutiremos más adelante.
En JAVA:
1. La sobrecarga de funciones es una clase que declara múltiples métodos con el mismo nombre, pero con diferente número de parámetros y tipos de parámetros.
2. La refactorización de funciones se refiere a declarar un método con el mismo nombre que la clase principal en la subclase, anulando así el método de la clase principal. La refactorización resuelve el problema de las diferencias entre subclases y clases principales. (Explicaré esto cuando hablemos de herencia)
En C:
1. El concepto de sobrecarga numérica es el mismo.
2. El concepto de reconstrucción es diferente. Las funciones virtuales en C tienen funciones más poderosas. ¡No es necesario introducir demasiados detalles aquí!
De hecho, no estás familiarizado con el concepto de sobrecarga. Creo que también lo has visto en programación. jeje! Tomemos un ejemplo de sobrecarga de operadores y lo entenderá (Esta función no es compatible con JAVA) Definimos tres variables enteras:
int i1=2, i2=3, i3=0; p>
i3 = i1 i2;
En este momento i3=5;
Sin embargo, ahora necesitamos definir tres variables de cadena:
String str1="jing", str2="wei", str3=""
str3 = str1 str2
; p>
p>
En este momento, str3 = “jingwei”; el signo más implementa la función de operación de sumar dos cadenas. El mismo signo más se puede utilizar para sumar dos variables enteras o dos variables de tipo cadena. El mismo operador implementa diferentes funciones ------ ¡esta es la llamada sobrecarga del operador (jeje, dije que debes haberlo visto antes :)! ¿No es como una palabra china con múltiples significados? Necesito explicar que la sobrecarga de operadores en C no es tan simple. Por ejemplo, podemos agregar dos objetos de tipo personalizado y realizar operaciones de asignación. Este escrito es conciso, claro y muy práctico. Por supuesto, hay demasiados temas sobre la sobrecarga de operadores. Si está interesado, ¡lea el libro!
Pasemos el tema de los operadores a las funciones. Lo que hemos estado enfatizando es el "método de llamada del objeto" ------ el objeto en realidad llama al "nombre" del método. ¿Y ahora necesitamos sobrecargar el método, es decir, definir múltiples funciones con el mismo nombre, para que la computadora no se confunda al llamarlo? No lo creo, jaja, porque es solo que los nombres de las funciones son los mismos y le pasaremos los parámetros cuando llamemos a la función. ¡No hay parámetros y también es un tipo de parámetro para pasar información de parámetros (la información no son parámetros)! Sin embargo, debido a los diferentes tipos de parámetros, número de parámetros y tipos de valores de retorno, ¿podemos distinguir funciones con el mismo nombre?