Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Curso de Java SE Orientado a Objetos

Curso de Java SE Orientado a Objetos

Anahí Salgado Díaz de la Vega

Anahí Salgado Díaz de la Vega

Super y This

20/38
Recursos

Super indica que una variable o método es de la clase padre, la superclase de cual heredan nuestras subclases, solo la usamos cuando aplicamos herencia.

Además, podemos llamar al constructor de la clase padre desde sus diferentes subclases usando super(); y enviando los argumentos que sean necesarios.

Por otro lado, this nos permite especificar que nuestras variables están señalando a la misma clase donde estamos trabajando, ya sea una clase normal, anidada, subclase o superclase.

public class User {
  int age = 1;

  public int getAge() {
    return this.age;
  }
}

public class Doctor extends User {
  String speciality = "Dentist";

  Doctor() {
    super.getAge(); // 1
    this.getSpeciality(); // Dentist
  }

  public int getSpeciality() {
    return this.speciality;
  }
}

Aportes 43

Preguntas 4

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

La razón por la cual salió el error en el super, es porque al mandar llamar al constructor de la clase padre este debe de ir siempre al inicio del constructor de la clase hijo

Ya iba en el video 25 y me toco devolverme es bueno ir practicando y tener los conceptos bien claros

SUPER interesting THIS class! 😃

Se puede hacer la clase User de tipo

public class abstract User {}

para que no puedan ser instanciada por si sola. Quizás sea un pro-tip

Tengo una manera de realizar el mismo procedimiento de abstracción de la clase padre, les recomiendo investigar como funciona la normalizacion en base de datos, por lo que he observado ese proceso no se limita a las bases si no también a crear herencia en cualquier lenguaje de programación.

👾 Super nos permite indicar que una variable o método pertenece a la clase padre, en cambio con this indicamos que pertenece a la misma clase.

Algunos apuntes respecto a Herencia:

La palabra reservada extends se utiliza para expresar que es hija de la clase. ejemplo: public class ClaseHija extends ClasePadre.
La clase padre se denomina super clase y la clase hija subclase.
super: es la palabra reservada para referirnos a las variables de la superclase.
this: es la palabra reservada para referirnos a las variables de la misma clase en la que se utiliza.

Porque en el constructor de la clase hija debemos poner el constructor del padre?
Entiendo q los constructores con parametros son para inicializar objetos pero a la vez son opcionales, ya q sino le pasas parametros este se va al constructor por defecto que seria el constructor sin ningun parametro.

Es interesante que una vez que se ha creado la clase padre y se asigna los atributos al método constructor, una vez que vamos a la clases hija y generamos el método constructor con alt + insert seleccionamos en “select none” y automáticamente nos completa el método constructor de la clase padre mas el super que indica la herencia, ayuda mucho eso.





Tengo curiosidad, el método setPhoneNumber no debería ser así? :

public void setPhoneNumber(String phoneNumber) {
        if (phoneNumber.length() != 8) {
            System.out.println("El numero telefonico debe ser de 8 digitos");
        } else {
            this.phoneNumber = phoneNumber;
        }
    }

En mi opinion la herencia forma parte estructural del diseño en el paradigma de objetos que es la representacion de la realidad de un sistema. Y como tal del analisis de ese sistema surge un esquema de clases donde se separa la generalizacion de la especializacion. Sin meterme en los casos tipicos de estudio en el proyecto actual tanto el medico, como el paciente y el usuario son personas. Estas tienen caracteristicas similares (nombre, apellido, documento, etc) y especiales (el paciente historia clinica, el medico matricula y el usuario un rol). Por lo que el esquema de clase padre y clase hija surge del modelo y es el medio para representarlo; no duplicar codigo es uno de los beneficios pero no es el motivo de elegir una clase padre solo ver que se repiten propiedades o metodos si no representan la estructura del sistema a implementar. Por lo menos es mi opnion.

se podría simplificar la sentencia de la siguiente manera.

 public void setPhoneNumber(String phoneNumber) {
        if (phoneNumber.length() != 8){
            System.out.println("El número telefónico debe ser de 8 dígitos máximo..");
        }else {
            this.phoneNumber = phoneNumber;
        }
    }```
  • Super y this

    La herencia se define con la siguiente sintaxis:

    public class Doctor extends User { // User → Súper Clase
        
    }
    
    • **Super **

      Indica que una variable o un método es de la Clase Padre (superclase).

    • this

      Permite especificar que la variable que esta señalando (this.nombreVariable) es de la misma Clase en que se usa.

Es solo por definición, o en lugar de User no seria mejor llamar Person la clase padre?

What?

![](

tercera vez viendo esta clase, pero en el momento que escribo esto esporque comprendi todo

Super y This 📝
Cuando se usa this especificas que esta señalando a la variable de la misma clase en la que estas.
Cuando usas super Indica que la variable o un método es de la clase padre. Llama al constructor de la clase padre para darle el estado inicial .

Super y This

En nuestro programa podemos ver que entre la clase Doctor y Patient se repiten los atributos name, email, address y phoneNumber. Estos atributos son los que tendrá las Superclase Usuario y que luego heredará a la las otras Subclases.

Para hacer que una clase herede de otra se le agrega la palabra extends y el nombre de la clase de la que va a heredar, en este caso: Patient extends User.

Como la clase padre requiere el nombre y el email en el constructor, tenemos que darle estos parámetros desde la clase hijo, esto se lo mandamos mediante el método super() dentro del constructor de la clase hijo

<h4>Super</h4>

Indica que una variable o un método es de la clase Padre (superclase).

<h4>This</h4>

Permite especificar que la variable que está señalando (this.nombreVariable) es de la misma clase en la que se usa.

Una vez implementada la herencia se tienen que eliminar todos los getters y setters de los atributos que se tenían en la clase y que pasaron a la superclase, en la super clase estarán los getters, setters y validaciones de cada atributo.

Genial!! Aprendí mucho!!

¿La clase padre hereda los métodos de la clase anidada que esta dentro de la clase hija?

Excelente presentación del Super y el This

Super clase 😃

Excelente información. Muchas gracias

explicaste super el super()

me parece muy buenas tus explicaciones.
thanks for the good dedication

super() o this() solo pueden ser usados uno u otro, y deben de se la primer sentencia.

Estupenda clase instructora Anahi, mediante el uso de la palabra reservada extends vamos a poder transferir los elementos de la clase padre a las hijas.

Al aplicar la herencia tenemos disponibles los atributos y métodos de la superclase en las subclases, así ya o tenemos que volver a escribirlos, bataría llamarlos con la palabra super.

Salió el error en el super, porque al mandar llamar al constructor de la clase padre este debe de ir siempre al inicio de cualquier otra cosa del constructor de la clase hija.

Todo muy claro.

Excelente explicación de Super y This.😁

super claro 😃

de diez la clase muchas gracias

Las palabras reservadas this y super en el Lenguaje de programación Java brindan un acceso a los atributos, métodos y constructores de la clase en la que se encuentran, y por tanto, también de la clase padre respectivamente.

Faltaría hacer a id de la clase padre que sea autoincrementál no?

genial, a reutilizar

creo que el análisis para determinar el origen del error fue muy básico sin ningún fundamento, sin embargo todo lo demás excelente.

super siempre debe ir al inicio del constructor de la clase.

Usar la clase padre está muy padre, y es súper cuando invocamos super();