import java.util.Scanner; /** * Representa un estudiante de la universidad */ public class Estudiante extends Persona { /** * Identificacion de estudiante */ protected String carnet = ""; /** * Promedio de notas con que el estudiante matricula en el * semestre actual */ protected double promedioPonderadoMatricula = 0.0; /** * Sobrescribe el metodo leer() heredado de persona. Cuando * se invoque este metodo en un estudiante con una referencia * a Persona, se invocara esta version y no la de persona. Ej: * * Persona persona = new Estudiante(); * persona.leer(); // invocara Estudiante.leer() y no Persona.leer() * * Por eso se dice que lo sobrescribe o "tapa". Se sobrescribe * solo cuando los dos metodos tienen exactamente el mismo nombre * parametros. El @Override le dice al compilador de Java que * verifique que ambos metodos tienen el mismo nombre y parametros. * Si no coinciden Java reportara un error. Si no indicaramos el * @Override y ambos metodos no coinciden, Java considerara que * son dos metodos independientes, sin relacion alguna, y no * reportara ningun error. */ @Override public void leer(Scanner input) { // Invocar al metodo Persona.leer() para que lea los // atributos de persona: la cedula y el nombre super.leer(input); // Despues de que se han leido los atributos de Persona // leer los de Estudiante: this.carnet = input.nextLine(); this.promedioPonderadoMatricula = input.nextDouble(); input.nextLine(); } /** * Imprime un estudiante */ @Override public String toString() { return String.format("%s (%s) %.2f [estudiante]" , super.toString() , this.carnet , this.promedioPonderadoMatricula); } }