2010-08-25 24 views
7

en java cualquier variable abstracta allí? trabajé estas variables abstractas en el constructor soy nort sure pero creo que el constructor admite variables estáticas.pls aclarar mi duda¿Hay alguna variable abstracta en java?

+3

Si una variable puede ser 'abstracta', ¿qué crees que significa eso? Tal vez deberías investigar tu motivación. – polygenelubricants

Respuesta

19

En Java, las clases y los métodos pueden ser abstractos. Las declaraciones de variables no pueden. Sin embargo, puede tener declaraciones de variables cuyos tipos sean abstractos. Ver ejemplo:

listas specifacation
public abstract class MyClass { // allowed 
    public abstract myMethod(); // allowed 
    public MyClass instance; // allowed 

    public abstract MyClass instance; // NOT ALLOWED!! 
} 
+0

Soy Java principiante. Cómo es esto permitido >> instancia pública de MyClass; // permitido . ¿No es esa la creación de instancia de una clase abstracta? – goldenmean

+2

@goldenmean Aún no está instanciado. instancia pública de MyClass = new MyClass() arrojaría errores. (si MyClass es abstracto) –

7

el lenguaje de 7 tipos de variables:

  1. variables de clase - declarados como static dentro de una declaración de la clase
  2. variables de instancia - dentro de una declaración de clase sin usar la palabra clave estática
  3. componentes de matriz - como i[2] cuando creamos una matriz como int[] i= new int[5]
  4. método Parámetros de - Nombre valores de los argumentos pasados ​​a un método
  5. parámetros de constructor - valores de nombre de argumento pasado a una constructor
  6. excepción-manejador de parámetros - creado cada tiempo se detecta una excepción
  7. variables locales - declaradas en un bloque ({ }) o para la declaración

Se pueden utilizar todos los tipos de variables (excepto # 4) en un constructor:

class Demo { 
    static int demo1 = 0;    // class variable 
    int[] demo2 = new int[5];   // instance variable 
    Demo(int demo3) {     // constructor parameter 
    try { 
     int demo4 =      // local variable 
        demo2[2];   // array component 
    } catch(RuntimeException demo5) { // exception-handler parameter 
    } 
    demo2 = new int[]{Demo.demo1}; // using class and instance variable 
             // in a constructor 
    } 
    int method(int demo6) {    // method parameter 
    } 
} 

El abstract palabra clave no está permitido por la declaración de variables.

0

Hay dos formas de definir variables abstractas en java sin usar palabras clave abstractas.

primera manera: Definir un constructor con parámetros en la clase abstracta, algo así como:

public abstract class TransactionManager { 
    private String separator; 

    public TransactionManager(String separator) { 
     this.separator = separator; 
    } 
} 

Al definir un constructor parametrizado en una clase abstracta, las subclases se ven obligados a definir sus propios constructores y llamar a la super constructor, por lo tanto, pasando su propio SEPARATOR.

segunda manera: Definir la propiedad como método de obtención, algo así como:

public abstract class TransactionManager { 
    public abstract String getSeparator(); 
} 

De esta manera el valor de la propiedad SEPARADOR se delega a ser definido por cada clase concreta.

Fuente: Define an abstract property in java

0

abstracto es un modificador no acceso en Java aplicable para las clases, métodos, pero no las variables.Se utiliza para lograr la abstracción, que es uno de los pilares de la Programación Orientada a Objetos.

+0

¿Tiene algo nuevo en su respuesta que no se mencionó en respuestas anteriores? –

Cuestiones relacionadas