in Java irgendwelche abstrakte Variablen da? Ich arbeitete diese abstrakten Variablen im Konstruktor ich bin nort sicher, aber ich denke, der Konstruktor unterstützt statische Variablen.pls klären meine ZweifelGibt es abstrakte Variablen in Java?
Antwort
In Java können nur Klassen und Methoden abstrakt sein. Variablendeklarationen können nicht. Sie können jedoch Variablendeklarationen verwenden, deren Typen abstrakt sind. Siehe Beispiel:
public abstract class MyClass { // allowed
public abstract myMethod(); // allowed
public MyClass instance; // allowed
public abstract MyClass instance; // NOT ALLOWED!!
}
Ich bin Java Anfänger. Wie ist das erlaubt? >> öffentliche MyClass-Instanz; // dürfen . Ist das nicht das Erstellen einer Instanz einer abstrakten Klasse? – goldenmean
@goldenmean Es ist noch nicht instanziert. public MyClass instance = new MyClass() würde Fehler werfen. (Wenn MyClass abstrakt ist) –
Die Sprache Specifacation Listen 7 Arten von Variablen:
- Klassenvariablen - deklariert als statisch innerhalb einer Klassendeklaration
- Instanzvariablen - innerhalb einer Klassendeklaration deklariert ohne das statische Schlüsselwort zu verwenden
- Array-Komponenten - wie
i[2]
wenn wir schaffen ein Array wieint[] i= new int[5]
- Methodenparameter - name Argumentwerte an eine Methode übergeben
- Konstruktorparameter - Werte Name Argument an einen Konstruktor übergeben
- Ausnahmebehandlungsparameter - erstellt jeweils Zeit eine Ausnahme abgefangen wird
- lokale Variablen - in einem Block deklariert (
{ }
) oder für Anweisung
Sie können alle Variablentypen verwenden (mit Ausnahme von # 4) in einem Konstruktor:
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
}
}
Das abstract
Schlüsselwort ist nicht für die Deklaration von Variablen erlaubt.
Es gibt 2 Möglichkeiten, abstrakte Variablen in Java zu definieren, ohne das abstrakte Schlüsselwort zu verwenden.
1. Weg: eine parametrisierte Konstruktor in der abstrakten Klasse definieren, so etwas wie:
public abstract class TransactionManager {
private String separator;
public TransactionManager(String separator) {
this.separator = separator;
}
}
Wenn eine parametrisierte Konstruktor in einer abstrakten Klasse definiert, werden die Unterklassen gezwungen, ihre eigenen Konstrukteuren zu definieren, und rufen Sie die Superkonstruktor, daher ihre eigenen SEPARATOR übergeben.
2. Art und Weise: Definieren Sie die Eigenschaft als Getter-Methode, so etwas wie:
public abstract class TransactionManager {
public abstract String getSeparator();
}
Auf diese Weise wird der Wert von SEPARATOR Eigenschaft delegiert wird von jeder konkreten Klasse definiert werden.
abstrakt ist ein nicht-Zugriffsmodifikator in Java anwendbar für Klassen, Methoden, aber keine Variablen.Es wird verwendet, um Abstraktion zu erreichen, die eine der Säulen der objektorientierten Programmierung ist.
Haben Sie etwas Neues in Ihrer Antwort, das in früheren Antworten nicht erwähnt wurde? –
- 1. Gibt es eine gute Open-Source-abstrakte Lastenausgleichsbibliothek für Java?
- 2. Java abstrakte Klasse, abstrakte Konstruktor
- 3. Actionscript3: Gibt es Variablen?
- 4. Gibt es Thread-Gruppen-lokale Variablen in Java?
- 5. Java klonen abstrakte Objekte
- 6. Ist es OK, abstrakte Methode vom Konstruktor in Java aufzurufen?
- 7. Warum verschachtelte abstrakte Klasse in Java
- 8. Java abstrakte Methode und Schnittstelle
- 9. Warum nicht abstrakte Klassen in Java serialisieren?
- 10. Scala abstrakte Klassen Übersetzung in Java
- 11. Abstrakte Klassen - Super-Konstruktor (Java)
- 12. Warum haben abstrakte Klassen in Java Konstruktoren?
- 13. Java Generics Rückgabetyp abstrakte Methode
- 14. Java abstrakte Klasse Felder überschreiben
- 15. Abstrakte Methoden ohne abstrakte Klassen
- 16. Gibt es Speicherlecks beim Neuzuweisen einer Variablen?
- 17. Java: Gibt es eine Kartenfunktion?
- 18. Gibt es einen einfachen CLI Java-Linter?
- 19. Gibt es ein Java-Komprimierungsprogramm
- 20. Warum gibt es in Java keine Binärliterale?
- 21. Gibt es einen beschreibbaren Iterator in Java?
- 22. Gibt es in Java ein ePoll-Äquivalent?
- 23. Gibt es in Java eine eval() - Funktion?
- 24. Can‘statische Methode in Java, gibt es null
- 25. Gibt es etwas wie RhinoMocks in Java?
- 26. Gibt es eine File.AppendAllText() in Java?
- 27. Gibt es in Java einen Null OutputStream?
- 28. Was sind abstrakte Klassen und abstrakte Methoden?
- 29. Java Web Services/JAXB - Abstrakte Oberklasse
- 30. Gibt es eine Möglichkeit, alle lokalen Variablen in Eclipse auszurichten?
Wenn eine Variable "abstrakt" sein kann, was bedeutet das dann? Vielleicht solltest du deine Motivation untersuchen. – polygenelubricants