Warum ist es nicht möglich, statische Methoden außer Kraft zu setzen?
Wenn möglich, verwenden Sie bitte ein Beispiel.
Warum ist es nicht möglich, statische Methoden außer Kraft zu setzen?
Wenn möglich, verwenden Sie bitte ein Beispiel.
Der folgende Code zeigt, dass dies möglich ist:
class OverridenStaticMeth {
static void printValue() {
System.out.println("Overriden Meth");
}
}
public class OverrideStaticMeth extends OverridenStaticMeth {
static void printValue() {
System.out.println("Overriding Meth");
}
public static void main(String[] args) {
OverridenStaticMeth osm = new OverrideStaticMeth();
osm.printValue();
System.out.println("now, from main");
printValue();
}
}
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
3 Stimmen
Die meisten OOP-Sprachen lassen dies nicht zu.
11 Stimmen
@jmucchiello: siehe meine Antwort. Ich habe dasselbe gedacht wie Sie, aber dann habe ich von den Ruby/Smalltalk-"Klassen"-Methoden erfahren, und es gibt also auch andere echte OOP-Sprachen, die das tun.
6 Stimmen
@jmucchiello die meisten OOP-Sprachen sind keine echten OOP-Sprachen (ich denke an Smalltalk)
0 Stimmen
Siehe auch stackoverflow.com/q/370962/632951
0 Stimmen
Python erlaubt das Überschreiben einer statischen Methode. stackoverflow.com/questions/893015/
2 Stimmen
Kann daran liegen, dass Java Aufrufe zu statischen Methoden zur Kompilierzeit auflöst. Selbst wenn Sie also geschrieben haben
Parent p = new Child()
und dannp.childOverriddenStaticMethod()
löst der Compiler es auf inParent.childOverriddenStaticMethod()
indem Sie sich den Referenztyp ansehen.0 Stimmen
Huzzah, wir können jetzt Dinge schreiben wie hastebin.com/codajahati.java . Mit einem solchen Muster (vorzugsweise mit weniger plumpen Code) kann Java im Wesentlichen alle Ausnahmen aus der Kernbibliothek eliminieren (kann, nicht wird), oder wir können einfach Dinge verpacken.