los súper La palabra clave en Java es una variable de referencia que se utiliza para referirse a un objeto de clase padre inmediato.
Siempre que crea la instancia de la subclase, se crea implícitamente una instancia de la clase principal a la que se hace referencia mediante una variable de superreferencia.
Uso de Java super Keyword
- super se puede utilizar para hacer referencia a la variable de instancia de la clase principal inmediata.
- super se puede utilizar para invocar el método de clase padre inmediato.
- super () se puede usar para invocar el constructor de clase padre inmediato.
1) super se utiliza para referirse a la variable de instancia de la clase principal inmediata.
Podemos usar super palabra clave para acceder al miembro de datos o al campo de la clase principal. Se utiliza si la clase principal y la clase secundaria tienen los mismos campos.
clase Animal {String color = «blanco»; } clase Perro extiende Animal {String color = «negro»; void printColor () {System.out.println (color); // imprime el color de la clase Dog System.out.println (super.color); // imprime el color de la clase Animal}} class TestSuper1 {public static void main (String argumentos[]) {Perro d = nuevo Perro (); d.printColor (); }}
Pruébelo ahora
Producción:
En el ejemplo anterior, ambas clases Animal y Dog tienen un color de propiedad común. Si imprimimos la propiedad de color, imprimirá el color de la clase actual de forma predeterminada. Para acceder a la propiedad principal, necesitamos usar super palabra clave.
2) super se puede usar para invocar el método de la clase principal
La palabra clave super también se puede utilizar para invocar el método de la clase principal. Debe usarse si la subclase contiene el mismo método que la clase principal. En otras palabras, se utiliza si se anula el método.
class Animal {void eat () {System.out.println («comiendo …»);}} class Dog extiende Animal {void eat () {System.out.println («comiendo pan …»);} void bark () {System.out.println («ladrando …»);} void work () {super.eat (); ladrar(); }} class TestSuper2 {public static void main (String args[]) {Perro d = nuevo Perro (); d.work (); }}
Pruébelo ahora
Producción:
En el ejemplo anterior, Animal y Dog, ambas clases tienen el método eat () si llamamos al método eat () desde la clase Dog, llamará al método eat () de la clase Dog de forma predeterminada porque se le da prioridad a local.
Para llamar al método de la clase principal, necesitamos usar super palabra clave.
3) super se usa para invocar el constructor de la clase principal.
La palabra clave super también se puede utilizar para invocar el constructor de la clase principal. Veamos un ejemplo sencillo:
clase Animal {Animal () {System.out.println («se crea el animal»);}} clase Perro extiende Animal {Perro () {super (); System.out.println («se crea el perro»); }} class TestSuper3 {public static void main (String args[]) {Perro d = nuevo Perro (); }}
Pruébelo ahora
Producción:
animal is created dog is created
Nota: super () se agrega en cada constructor de clase automáticamente por el compilador si no hay super () o this ().
Como sabemos bien, el compilador proporciona el constructor predeterminado automáticamente si no hay ningún constructor. Pero también agrega super () como la primera declaración.
Otro ejemplo de super palabra clave donde super () es proporcionado implícitamente por el compilador.
class Animal {Animal () {System.out.println («se crea el animal»);}} class Dog extiende Animal {Dog () {System.out.println («se crea el perro»); }} class TestSuper4 {public static void main (String args[]) {Perro d = nuevo Perro (); }}
Pruébelo ahora
Producción:
animal is created dog is created
super ejemplo: uso real
Veamos el uso real de super palabra clave. Aquí, la clase Emp hereda la clase Person, por lo que todas las propiedades de Person se heredarán a Emp de forma predeterminada. Para inicializar toda la propiedad, estamos usando el constructor de la clase principal de la clase secundaria. De esta manera, estamos reutilizando el constructor de la clase padre.
class Person {int id; Nombre de cadena; Persona (int id, String name) {this.id = id; this.name = nombre; }} clase Emp extiende Persona {salario flotante; Emp (int id, String name, float salary) {super (id, name); // reutilizando el constructor padre this.salary = salario; } void display () {System.out.println (id + «» + nombre + «» + salario);}} class TestSuper5 {public static void main (String[] args) {Emp e1 = new Emp (1, «ankit», 45000f); e1.display (); }}
Pruébelo ahora
Producción: