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
Entender la Programación orientada a objetos
Programación orientada a objetos en Java
¿Qué es un Objeto?
Abstracción: ¿Qué es una Clase?
Modularidad
Definir Clases y sus componentes
Creando nuestra primera Clase
Método constructor
Static: Variables y Métodos Estáticos
Creando elementos estáticos
Final: Variables Constantes
Sobrecarga de métodos y constructores
¡Reto!
Encapsulamiento: Modificadores de acceso
Getters y Setters
Variable vs. Objeto
Variable vs. Objeto: Un vistazo a la memoria
Clases Anidadas
Clases Internas y Locales a un método
Enumerations
Reutilizar Código
¿Qué es la Herencia? Don't repeat Yourself
Super y This
Polimorfismo: Sobreescritura de Métodos
Polimorfismo: Sobreescribiendo el método toString
Interfaces
Creando una interfaz para definir si una fecha es agendable
Collections
Aplicar Abstracción
Clases Abstractas
Miembros abstractos
Clases Anónimas
Diferencias entre las Interfaces y las Clases Abstractas
Interfaces en Java 8 y 9
Herencia en interfaces
Ensamblando Objetos el proyecto
Simulando autenticación de usuarios
Modularizando la UI de Doctores
Definiendo las citas disponibles
Modularizando la UI de Pacientes
Recorriendo estructuras de árbol en Java
Agendando Citas
Cierre del curso: Continúa con Programación Funcional en Java
Aún no tienes acceso a esta clase
Crea una cuenta y continúa viendo este curso
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
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?
 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();
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.