Java Extender una clase y establecer valores

Puede usar variables privadas en lugar de protegidas. Esto será más apto. Puede usar el constructor para establecer el valor de la superclase. Editado:

public class Animal{

    private String pig;
    private String dog;
    private String cat;

    public Animal(String pig,String dog,String cat){
       this.pig=pig;
       this.dog=dog;
       this.cat=cat;
    }

}


public class AnimalAction extends Animal
{ 
  public AnimalAction(String pig, String cat, String dog)
  {
       super(pig,dog,cat);
  } 

}
Respuesta 1

Debería poder usar this.pigetc, ya que heredó los miembros protegidos. También podrías llamar a los public setPig(...)métodos.

Respuesta: 2

No hay nada de malo en usar la protectedvariable miembro y luego heredarlas en la subclase.

Pero si aparece un desarrollador y subclasifica su clase, pueden estropearlo porque no lo entienden completamente. Con los miembros privados, además de la interfaz pública, no pueden ver los detalles específicos de la implementación de cómo se están haciendo las cosas, lo que le brinda la flexibilidad de cambiarlo más adelante. Al proporcionarlo protected member variables, solo se está acoplando estrechamente entre su subclase y la superclase.

Respuesta: 3

Cuanto menos se puedan ver sus variables miembro fuera de la clase, mejor. Haría las variables de clase privatey haría públicos los captadores (o según sea necesario) y protegería a los definidores.

Respuesta: 4

No es necesario usar el superprefijo, ni ningún otro prefijo, para acceder a las variables protegidas.

Por cierto, no estoy de acuerdo con Thomas en un punto: no llame a los métodos de establecimiento de la superclase en su constructor. El uso de setters no finales en un constructor puede tener efectos feos si una subclase los anula. Entonces podrían ser llamados a un objeto construido de manera incompleta. Pero deberías considerar hacer que tus setters sean definitivos si no quieres que se anulen.

El principio del "diseño para la herencia o para prohibirlo" se explica en el libro de Java Efectivo de Joshua Bloch.

Respuesta: 5

mi pregunta es cómo ordenaría el arrayofnames y el arrayofdownloads para que estén en orden ascendente y cada nombre coincida con el número correspondiente de descargas. He estado intentando durante 4 horas y yo ...

Actualmente estoy desarrollando una aplicación para teléfonos móviles (teléfonos inteligentes). Mi mente ha tomado el camino de distribuir la aplicación en dos versiones diferentes. Uno que es gratuito pero tiene adiciones y ...

¿Cómo puede una aplicación de producción mostrar un error de clase no encontrada a los usuarios, pero en el emulador funciona bien con Android 9.0? ¿No debería el emulador también romperse o mostrar un error durante la compilación o construcción? ...

Tengo un objeto GOval, vamos a llamarlo círculo que estoy usando en un applet. Agregué el objeto GOval al contenedor y luego debajo de la línea donde lo agregué al contenedor escribí las siguientes líneas ...