Inner Class

Oi Galera estou com duvidas sobre Inner Class… Estou implementando um exemplo do pattern Factory Method e estou com uma duvida sobre o escopo da inner class. Estou criando 2 classe, 1 classe Carro e uma Carro Factory… E a classe carroFactory ta com dificuldade de enchergar a inner class da classe Carro. Alguem sabe porque?

[color=blue]public abstract class Carro {

protected float valor;

public float getPreco() {
return valor;
}

public class Vectra extends Carro {
    public Vectra() {
        valor = 30000.0f;
    }
}


public class Omega extends Carro {
    public Omega() {
        valor = 50000.0f;
    }
}

public class Golf extends Carro {
    public Golf() {
        valor = 35000.0f;
    }
}

public class Gol extends Carro {
    public Gol() {
        valor = 20000.0f;
    }
}

}[/color]

[color=blue]public class CarroFactory {
public static Carro getCarro( String tipoCarro ) {

        if( tipoCarro == null ) return null;
        else if( tipoCarro.equals("Vectra") ) return new Vectra();
        else if( tipoCarro.equals("Omega") ) return new Omega();
        else if( tipoCarro.equals("Golf") ) return new Golf();
        else if( tipoCarro.equals("Gol") ) return new Gol();
        else return null;
    }

}[/color][/color]
ou

[color=blue]public class CarroFactory {
public static Carro getCarro( String tipoCarro ) {

        if( tipoCarro == null ) return null;
        else if( tipoCarro.equals("Vectra") ) return new Carro.Vectra();
        else if( tipoCarro.equals("Omega") ) return new Carro.Omega();
        else if( tipoCarro.equals("Golf") ) return new Carro.Golf();
        else if( tipoCarro.equals("Gol") ) return new Carro.Gol();
        else return null;
    }

}[/color][color=cyan][/color]

Simples. Você precisa declarar as inner classes de Carro como static (public static class) ou passar uma instância de Carro no construtor (new Vectra(new Carro())).