Java classes

DarkT

Power Member
Tenho aqui a classe base:

Código:
package parte3;

public abstract class Exp 
{
    private final char identificador;

    public Exp(char id)
    {
        identificador = id;
    }

    public abstract boolean getValor(); 
    public String toString() 
    { 
        return Character.toString(identificador); 
    }
}


e tenho a classe que tenho de construir:

Código:
package parte3;

public class Constante extends Exp {

    private boolean valor;
    
    public Constante(boolean v)
    {
        super(' ');
        
        this.valor=v;
        
    }
    
    public boolean getValor()
    {
        
        return valor;
        
    }
    
    public static void main(String [] args)
    {
        Exp TRUE = new Constante(true);
        Exp FALSE = new Constante(false);
        
        System.out.println( TRUE + " = " + TRUE.getValor());
        System.out.println( FALSE + " = " + FALSE.getValor());
        
    }
    
}

o meu problema e mesmo no super ...

o Output devia aparecer

1 = True

0 = False;

mas nao aparece devido ao super..

tipo se mter super('1');

da
1 = true
1= false

ajudem ai sff : )

epa deve ser algo muito estupido mas nao tou a ver o que é ..
 
Construtor do super

Viva.
Na invocação do construtor da classe base estás a inicializar a variável "identificador" a ' ', pelo que quando tens o TRUE/FALSE no println(), ele vai-te retornar (space) = true/false...Se queres que ele te devolva '1' ou '0' no toString da classe base, tens de afectar a variável "identificador", por exemplo:

Código:
super( ( v ? '1' : '0') );
 
obrigado podem apagar ta resolvido :D

tipo nao me lembrei de fazer com operador trenario ..

tinha feito assim

if (v)
super('1');
else
super('0');

Edava erro pois dizia que o super e a 1 isntruçao do construtor.

Muito obrigado ^^
 
Back
Topo