Autor Tema: Java duda sobre ámbito o visibilidad de variable dónde debe declararse CU00681B  (Leído 2155 veces)

paulamhr

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 4
    • Ver Perfil
Muy buenas, he realizado el ejercicio propuesto para las variables enumeradas CU00681B del curso básico Aprenda Java como si estuviera en primero, y al realizarlo me ha surgido una duda. He declarado la variable enumerada fuera de la definición de la clase
 
Código: [Seleccionar]
/**
 * This class is to practice the enum types
 *
 * @author Paula Monasterio-Huelin
 * @version 22-06-17
 */
import java.util.*;

[b]enum MarcaDeVehiculo{FORD,TOYOTA,SUZUKI,RENAULT,SEAT};[/b]

public class enumVehiculos
{
    // instance variables - replace the example below with your own
     
    private String matricula;
    private MarcaDeVehiculo marca;
    /**
     * Constructor for objects of class enumVehiculos
     */
    public enumVehiculos()
    {
         // initialise instance variables
        matricula = "0052VHT";
        marca = MarcaDeVehiculo.FORD;

    }

    /**
     * Method setMatricula - set the value for the matricula parameter
     *
     * @param  plateVal  the new value of matricula
     */
    public void setMatricula(String plateVal)
    {
        // put your code here
        matricula = plateVal;
    }
   
     /**
     * Method setMarca - set the value for the marca parameter
     *
     * @param  brandVal  the new value of marca
     */
    public void setMarca(MarcaDeVehiculo brandVal)
    {
        marca= brandVal;
    }
   
    /**
     * Method  getMarca- obteins the value for the marca parameter
     *
     * @return  the value of marca
     */
    public MarcaDeVehiculo getMarca()
    {
        return marca;
    }
   
      /**
     * Method getMatricula - obteins the value for the matricula parameter
     *
     * @return  the value of matricula
     */
    public String getMatricula()
    {
        // put your code here
        return matricula;
    }
}


Y luego en la clase de test puedo instanciarla directamente:

Código: [Seleccionar]
public class TestEnumVehiculos
{
    /**
     * Main method to test the class enumVehiculos
     */
    public static void main(String [] Args)
    {
       
        /* Parameters for the test*/
        enumVehiculos miCoche = new enumVehiculos();
        EntradaDeTeclado miEntrada = new EntradaDeTeclado();
        String datosEntrada;
        /*group of instructions to execute*/
        System.out.println("Introduzca un valor de matricula");
        miEntrada.pedirEntrada();
        datosEntrada = miEntrada.getEntrada();
        miCoche.setMatricula(datosEntrada);
        System.out.println("Introduzca un valor de marca entre estos posibles:");
        System.out.println("FORD,TOYOTA,SUZUKI,RENAULT,SEAT");
        miEntrada.pedirEntrada();
        datosEntrada = miEntrada.getEntrada();
       
        if (datosEntrada.equalsIgnoreCase("FORD")){
            miCoche.setMarca(MarcaDeVehiculo.FORD);
        }else if (datosEntrada.equalsIgnoreCase("TOYOTA") ){
          [b]  miCoche.setMarca(MarcaDeVehiculo.TOYOTA);[/b]
        }else if (datosEntrada.equalsIgnoreCase("SUZUKI") ){
            miCoche.setMarca(MarcaDeVehiculo.SUZUKI);
        }else if (datosEntrada.equalsIgnoreCase("RENAULT") ){
            miCoche.setMarca(MarcaDeVehiculo.RENAULT);
        }else if (datosEntrada.equalsIgnoreCase("SEAT") ){
            miCoche.setMarca(MarcaDeVehiculo.SEAT);
        }
       
        System.out.println("La matrícula del coche es: " + miCoche.getMatricula());
        System.out.println("La marca del coche es:" + miCoche.getMarca().toString().toLowerCase());
    }
}


Pero he probado a declararla dentro de la definicón de la clase y entonces para instanciarla tengo que llamarla de la siguiente manera:
enumVehiculos.MarcasDeCoche.FORD por ejemplo. Lo que no me queda claro es qué visibilidad o por quien es accesible la variable enumerada si la declaro fuera de la definición de la clase.

Gracias de antemano por vuestra ayuda.
« Última modificación: 29 de Julio 2017, 19:26 por Alex Rodríguez »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Java. duda sobre ámbito o visibilidad de una variable
« Respuesta #1 en: 22 de Julio 2017, 18:43 »
Hola paulamhr.

Si sigues el curso hasta el siguiente tema, verás que lo que has creado el enum como una clase y no como un atributo de una clase. De ahí el problema que te surge.


Saludos. ;D

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".