2010-08-25 36 views
7

en Java des variables abstraites là-bas? j'ai travaillé ces variables abstraites dans le constructeur je suis Nort sûr, mais je pense que le soutien du constructeur variables.pls statiques clarifier mes doutesExiste-t-il des variables abstraites dans Java?

+3

Si une variable peut être «abstraite», que pensez-vous que cela signifie? Peut-être devriez-vous étudier votre motivation. – polygenelubricants

Répondre

19

En Java uniquement les classes et les méthodes peuvent être abstraites. Les déclarations de variables ne peuvent pas. Cependant vous pouvez avoir des déclarations de variables dont les types sont abstraits. Voir par exemple:

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

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

Je suis débutant Java. Comment est-ce permis? >> instance MyClass publique; // permis . N'est-ce pas créer une instance d'une classe abstraite? – goldenmean

+2

@goldenmean Il n'est pas encore instancié. instance MyClass publique = new MyClass() renvoie des erreurs. (si MyClass est abstrait) –

7

La langue des listes de specifacation 7 types de variables:

  1. variables de classe - déclarées comme statique dans une déclaration de classe
  2. variables d'instance - déclarées dans une déclaration de classe sans utiliser le mot-clé statique
  3. composants du tableau - comme i[2] quand on crée un tableau comme int[] i= new int[5]
  4. méthode paramètres - valeurs d'argument de nom passée à une méthode
  5. paramètres du constructeur - valeurs d'argument de nom transmis à un constructeur
  6. paramètre gestionnaire d'exceptions - créé chaque heure à laquelle une exception est interceptée
  7. variables locales - déclarées dans un bloc ({ }) ou pour l'instruction

Vous pouvez utiliser tous les types de variables (sauf # 4) dans un constructeur:

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 
    } 
} 

Le mot-clé abstract n'est pas autorisé pour la déclaration variable.

0

Il y a 2 façons de définir des variables abstraites en java sans utiliser mot-clé abstrait.

1er chemin: Définir un constructeur paramétrés dans la classe abstraite, quelque chose comme:

public abstract class TransactionManager { 
    private String separator; 

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

Lors de la définition d'un constructeur paramétré dans une classe abstraite, les sous-classes sont obligés de définir leurs propres constructeurs et appeler le super constructeur, passant ainsi son propre SEPARATOR.

2ème façon: Définir la propriété comme getter, quelque chose comme:

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

De cette façon, la valeur de SÉPARATEUR propriété est déléguée à définir par chaque classe concrète.

Source: Define an abstract property in java

0

abstraite est un modificateur non-accès en Java applicable pour les classes, méthodes, mais pas les variables.Il est utilisé pour réaliser l'abstraction qui est l'un des piliers de la programmation orientée objet.

+0

Avez-vous quelque chose de nouveau dans votre réponse qui n'a pas été mentionné dans les réponses précédentes? –