¡Hola Estudiante!
La diferencia entre Funcionario jose = new Contador();
y Contador jose = new Contador();
es que en el primer caso estás creando una instancia de la clase Contador
, pero la estás almacenando en una variable de tipo Funcionario
. En el segundo caso, estás creando una instancia de la clase Contador
y la estás almacenando en una variable de tipo Contador
.
La principal ventaja de usar Funcionario jose = new Contador();
es que puedes tratar al objeto jose
como si fuera un Funcionario
, lo que significa que puedes llamar a los métodos de la clase Funcionario
y a los métodos que haya implementado Contador
. Por ejemplo, si la clase Funcionario
tiene un método trabajar()
, y la clase Contador
tiene un método calcularImpuestos()
, podrías llamar a ambos métodos en el objeto jose
.
Por otro lado, si usas Contador jose = new Contador();
, solo puedes tratar al objeto jose
como un Contador
. Esto significa que solo puedes llamar a los métodos que haya implementado Contador
.
Aquí te dejo un ejemplo práctico:
Supongamos que tienes las siguientes clases:
public class Funcionario {
public void trabajar() {
System.out.println("El funcionario está trabajando");
}
}
public class Contador extends Funcionario {
public void calcularImpuestos() {
System.out.println("El contador está calculando impuestos");
}
}
Si creas un objeto jose
de esta manera: Funcionario jose = new Contador();
, podrías llamar a los métodos trabajar()
y calcularImpuestos()
de la siguiente manera:
jose.trabajar(); // Imprime "El funcionario está trabajando"
((Contador)jose).calcularImpuestos(); // Imprime "El contador está calculando impuestos"
Si creas un objeto jose
de esta manera: Contador jose = new Contador();
, solo podrías llamar al método calcularImpuestos()
de la siguiente manera:
jose.calcularImpuestos(); // Imprime "El contador está calculando impuestos"
Espero haber ayudado y buenos estudios!