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

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 ...

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 ...

Estoy usando log4j para enviar un correo electrónico cuando hay una excepción. a continuación se muestra mi configuración de archivo de propiedades log4j. log4j.rootLogger = WARN, R, correo electrónico log4j.appender.R = org.apache.log4j.ConsoleAppender log4j ....

Hola, estoy usando GWT para enviar un archivo usando un servlet. Inicialmente intentaba enviar solo un archivo al servidor. Eso estaba funcionando bien. Ahora en af ​​ormPanel agregué 3 Listbox. listBox privado propertyNamelist = ...