Este
Siempre debe haber algo para representar el objeto actual de la clase. Al igual que este puntero en C ++, esta palabra clave en Java representa la referencia al objeto actual.
Tiene tres funciones principales:
1. Llame a otros constructores en el constructor.
Por ejemplo, hay una clase de estudiantes con tres constructores. Si llama a otro constructor en un determinado constructor, este () es necesario y no es posible usar alumno () directamente.
2. Devuelva la referencia al objeto actual.
3. Distinga entre nombres de variables y nombres de parámetros de miembros.
Vea el siguiente ejemplo:
Estudiante de clase pública {nombre de cadena privada; edad privada int; Colegio de cuerdas privadas; estudiante público () {edad = 20; } Public Student (nombre de cadena) {this (); // no puede ser llamado estudiante, solo use este método (). this.name = name; System.out.println ("Este nombre de estudiante es"+nombre); } Estudiante público (nombre de cadena, String College) {this (nombre); // C ++ Puede llamar directamente a otros constructores this.college = College; System.out.println ("Este nombre de estudiante es"+nombre+"College Is"+College); } actualización de estudiante público () {Age ++; devolver esto; } public void print () {System.out.println ("Nombre es:"+Nombre+"La edad es:"+edad+"College es:"+universidad); } public static void main (string [] args) {Student Student1 = New Student ("Linc"); Estudiante estudiante2 = nuevo estudiante ("Linc", "Shenyang College"); student2.upgrade (). print (); }}Cuando te pierdas en el vasto océano de objetos, no olvides usar esto para encontrarte.
súper
Super es este padre. Desde la perspectiva de los objetos faciales, estos dos conceptos son fáciles de entender.
Las subclases se heredan de la clase principal. Las propiedades y métodos protegidos y superiores de la clase principal nacen innatamente en la subclase. Entonces, ¿por qué todavía necesitas la palabra clave Super?
Primero, mire la construcción de la clase principal. Al construir la subclase, primero debe llamar al constructor predeterminado de la clase principal, que es consistente con las propiedades de construcción de C ++. Cuando la clase principal tiene múltiples constructores, debe especificar cuál llamar. Esto requiere Super (Arg1, Arg2 ...).
Cabe señalar que al llamar al constructor de la clase base en el constructor de la subclase, Super debe escribirse como el primero, de lo contrario se informará un error.
En segundo lugar, llame a este método de la clase principal en algunos métodos que subclase sobrescribe la clase principal. Como todos sabemos, algunos métodos para sobrescribir las clases de los padres en subclases son una forma de orientar el polimorfismo en orientación a objetos, y por varias otras razones, este método de la clase principal debe llamarse en este método para distinguir. En este momento, Super necesita usarse para completarlo.
Public Class ClassLeader extiende al estudiante {deber de cadena privada; public classLeader () {Duty = "Class Monitor"; } public classLeader (String Duty, String Name, String College) {super (nombre, universidad); this.duty = deber; } public void print () {super.print (); System.out.println ("El deber es" + deber); } public static void main (string [] args) {classLeader líder = new classLeader ("vida", "linc", "shenyang"); líder.print (); }}Coloque los dos archivos de clase en el mismo directorio, compilar y ejecutar:
D:/Workspace/Java/Project261/Super> Java -d. *Java D:/Workspace/Java/Project261/Super> Java Classleader
Resultados de ejecución:
Este nombre de estudiante es Linc Este nombre de estudiante es Linc College es Shenyang Nombre es: Linc Age Is: 20 College Is: Shenyang Duty es vida
Vea cómo se maneja en otros idiomas:
C# proporciona la palabra clave base para completar las funciones similares a Super, y C ++ la llama directamente con el nombre de la clase base.