¿Es posible no heredar algunas clases internas privadas en Java?

Tengo Class1 que contiene muchas clases anónimas internas privadas como:

ClassAInterface var1=new ClassAInterface {
 .....

Cuando heredo Class2 de Class1, ¿es posible no heredar todas estas clases sino reemplazarlas por nuevas? Entonces, todos los métodos que usaron estas variables de clase usarán solo objetos en la clase heredada. O existe otra manera? Así que me gustaría heredar métodos, lógica de trabajo, pero no me gusta heredar estructuras de datos. Gracias

preguntado el 03 de mayo de 12 a las 15:05

Nada que sea privado puede ser heredado. Solo se pueden heredar miembros protegidos/públicos. -

De documentos: una subclase hereda todos los miembros (campos, métodos y clases anidadas) de su superclase. -

Del mismo documento: "Una subclase no hereda los miembros privados de su clase principal. Sin embargo, si la superclase tiene métodos públicos o protegidos para acceder a sus campos privados, estos también pueden ser utilizados por la subclase". -

¿Cómo se pueden usar campos privados de superclase si no fueron heredados y por lo tanto no creados? son creados. En mi caso, el método público usa campos privados. Me gustaría sustituir con otros campos para no reescribir métodos. ¿Entiendes el problema? -

3 Respuestas

Cualquier cosa privada nunca se puede heredar en una subclase.

contestado el 03 de mayo de 12 a las 15:05

Debe usar una clase anidada o también llamada clase interna estática:

public class Class1{

   // fields and methods for Class1

   protected static MyInnerClassA{

       //some fields methods here for MyInnerClassA
   } 
}

Por lo tanto, cuando hereda de Class1, puede crear nuevas instancias de MyInnerClassA porque esta es accesible. En pocas palabras, la palabra clave estática en este caso permite obtener una clase interna independiente de su clase principal.

contestado el 03 de mayo de 12 a las 16:05

Si está buscando heredar "métodos, lógica de trabajo, pero no estructuras de datos", debe usar interface más y composición en lugar de herencia.

contestado el 03 de mayo de 12 a las 15:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.