Article View: es.comp.lenguajes.java
Article #26950Re: ¿Simular herencia multiple?
From: Jonathan Revusky
Date: Fri, 13 Nov 1998 00:00
Date: Fri, 13 Nov 1998 00:00
108 lines
3247 bytes
3247 bytes
Juan Gonzalo de Silva Medina wrote:
>
> Jonathan, no lo entiendo. Espero que no sean especificaciones de la 1.2
No, esto tiene que ver con el lenguaje y el lenguaje en s� no ha
cambiado entre 1.1 y 1.2. Muchos nuevos API's, pero el lenguaje es el
mismo.
> Yo he hecho:
>
> ----------------8<-----------------
> class A{
> private void mensajeA(){ System.out.println("Soy a"); }
> }
Tendr�a que ser algo como:
protected void mensajeA()
ya que incluso las subclases de A no pueden acceder a la implementaci�n
"private". Tiene que ser "protected".
> class B{
> private void mensajeB(){ System.out.println("Soy b"); }
> class C extends A{
> public void mensajes(){
> mensajeA();
> mensajeB();
> }
> }
> }
> class D{
> public static void main(String s[]){
> C c = new C();
> c.mensajes();
> }
> }
La clase D no puede ser compilada porque no hay ninguna instancia de B a
la que la instancia de clase C puede ser asociada. (�Eso es claro
acaso?)
De hecho, necesitar�as algo como:
class B {
private void mensajeB() {...}
class C extends A {
....
}
C createC() {
return new C();
}
}
class D {
public static void main(String s[]){
B b = new B();
C c = b.createC();
c.mensajes();
}
}
> ----------------8<-----------------
>
> Con lo que C extenderia A y B a la vez.
No extiende A y B a la vez porque no hay herencia multiple en Java. Pero
es un modo de simularlo en cierto modo.
>
> Como respuesta, al compilar obtengo:
>
> prb.java:10: No method matching mensajeA() found in inner class B. C.
> mensajeA();
> ^
> prb.java:18: Class C not found in type declaration.
> C c = new C();
> ^
> prb.java:18: Class C not found in type declaration.
> C c = new C();
> ^
>
> Tengo claro que los dos ultimos errores son ciertos, ya que C no puede
> ser instanciada ya que su ambito se restringe a la clase B.
> Pero el primero de ellos parece que dice que C no "extiende" A.
El m�todo tendr�a que ser "protected" por lo menos. "Private" es
realmente privado. No tiene acceso ni las subclases.
> Un poco raro �no?
Un poco rollo quiz�... :-) Raro, no, porque, en realidad, todo est�
funcionando como debe funcionar....
Un saludo,
Jonathan Revusky
--
Available for Java and Delphi Consulting
Make your .class files double-clickable
with SmartJ
http://www.bigfoot.com/~crystalline.solutions
Technical Details
Message-ID:
<364B720E.14C0B1B8@jet.es>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<72em2t$n0v$1@talia.mad.ibernet.es> <364B1D17.F50D6DAD@jet.es> <364B6C4E.F2B2D0C7@caymasa.es>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: 1116f3,a73bec53770fedc9 X-Google-Attributes: gid1116f3,public From: Jonathan Revusky <jrevusky@jet.es> Subject: Re: ¿Simular herencia multiple? Date: 1998/11/13 Message-ID: <364B720E.14C0B1B8@jet.es> X-Deja-AN: 411263666 Content-Transfer-Encoding: 8bit References: <72em2t$n0v$1@talia.mad.ibernet.es> <364B1D17.F50D6DAD@jet.es> <364B6C4E.F2B2D0C7@caymasa.es> X-Accept-Language: en Content-Type: text/plain; charset=iso-8859-1 Organization: Telefonica Transmision de Datos Mime-Version: 1.0 Reply-To: jrevusky@bigfoot.com Newsgroups: es.comp.lenguajes.java