Warum kann Math nicht instanziert werden?

Status
Nicht offen für weitere Antworten.
E

ErnstC

Gast
Hallo allerseits,
In der Klasse Math wird kein Konstruktor implementiert (habe ich der Doku entnommen, dort finde ich keinen).
Also muss doch der Standardkonstruktor intern (mit dem Modifizierer public) erzeugt werden.
Warum kann dann Math nicht instanziert werden?
Math m = new Math(); // gibt Fehlermeldung des Compilers

mfg
Ernst
 

Kim Stebel

Bekanntes Mitglied
Mal abgesehen davon, dass es absolut sinnlos ist, Math instanziieren zu wollen, steht in Math wahrscheinlich so etwas:
private Math(){}

Und da private Methoden nicht in der Dokumentation auftauchen...
 
B

Beni

Gast
Math hat einen Konstruktor, nur ist der private...

Was willst du überhaupt mit einem Math-Objekt?
 
G

Guest

Gast
Beni hat gesagt.:
Math hat einen Konstruktor, nur ist der private...

Was willst du überhaupt mit einem Math-Objekt?
------------------------------------------------

1) Ich will mit Math ein bisschen testen.

2) Warum wird der private-Konstruktor nicht in der Java-Doku erwähnt??

mfg
ErnstC
 
S

SlaterB

Gast
> Ich will mit Math ein bisschen testen.

was bringt es dir, mit einem total leeren Objekt zu testen?
die statischen Operationen musst du eh an der Klasse aufrufen, nicht am Objekt

> Warum wird der private-Konstruktor nicht in der Java-Doku erwähnt??

wie man's sieht, wenn gar nix über Konstruktoren in der API steht,
dann bedeutet es ja offensichtlich, dass kein öffentlicher Konstruktor da ist -> nur private ;)

(vielleicht auch noch protected usw, bin mir jetzt nicht sicher, aber keine Info ist durchaus auch ne Info)
 

Ariol

Top Contributor
Statt
Code:
Math math = new Math();
double d = math.round(3.1111111);
schreibt man
Code:
double d = Math.round(3.1111111);
 
G

Guest

Gast
Um hier noch weitere Fragen zu vermeiden:

Wenn man mit Math arbeiten / testen will benötigt man KEIN Objekt der Klasse sondern arbeitet mit den STATISCHEN Methoden die an der Klasse aufgerufen werden und nicht an einem Objekt.
 
M

maki

Gast
Du brauchts kein Objekt der Klasse Math, da es sich nur um statische Methoden handelt, eine Utitlity Klasse eben.
Objekte davon machen keinen Sinn, deswegen wurde es "verboten", daher der private Konstruktor.
 
G

Guest

Gast
maki hat gesagt.:
Du brauchts kein Objekt der Klasse Math, da es sich nur um statische Methoden handelt, eine Utitlity Klasse eben.
Objekte davon machen keinen Sinn, deswegen wurde es "verboten", daher der private Konstruktor.
--------------------------------------------------------------------
Dadurch, dass der Standard-Konstruktor als private deklariert wurde, kann man keine Objekte dieser Klasse erzeugen.
Frage:
Warum wurde Math dann nicht als abstract Klasse deklariert?
Dadurch erreicht man auch, dass kein Objekt von Math erzeugt werden kann.


mfg
ErnstC
 

Niki

Top Contributor
Nein, das würde genau das Gegenteil bewirken, weil du von Math erst ableiten müsstest und erst recht wieder ein Objekt erzeugen musst von der Subklasse.
abstract sagt nur aus, dass du von dieser Klasse erst einen konkreten Subtype brauchst. Dieser Subtype muss alle abstrakten Methoden überschreiben (außer er ist eben nicht konkret, also wieder abstrakt)
 

tfa

Top Contributor
Anonymous hat gesagt.:
Frage:
Warum wurde Math dann nicht als abstract Klasse deklariert?
Dadurch erreicht man auch, dass kein Objekt von Math erzeugt werden kann.

Wenn sie abstrakt wäre, könnte man eine Subklasse davon ableiten. So könnte man doch
Objekte vom Typ "Math" erzeugen, was sinnlos ist.
 

Murray

Top Contributor
tfa hat gesagt.:
Anonymous hat gesagt.:
Frage:
Warum wurde Math dann nicht als abstract Klasse deklariert?
Dadurch erreicht man auch, dass kein Objekt von Math erzeugt werden kann.

Wenn sie abstrakt wäre, könnte man eine Subklasse davon ableiten. So könnte man doch
Objekte vom Typ "Math" erzeugen, was sinnlos ist.

Von einer abstrakten Klassen kann man nur dann erfolgreich (also ohne Compile-Fehler) eine anderen Klasse ableiten, wenn die abstrakte Klasse mindestens einen nicht als "private" deklarierten Konstruktor hat. Daher wird es von manchen als sinnlos angesehen, abstrakte Klassen mit lediglich privaten Konstruktoren zu definieren .

Abstrakte Klassen sind solche, die zwar grundsätzlich instanziierbar sind, aber eben nur in Form einer Ableitung. Möchte man sicherstellen, dass eine Klasse niemals instanziiert werden kann, dann ist das Schlüsselwort "abstract" nicht das Mitttel der Wahl; wenn man stattdessen alle Konstruktoren als "private" deklariert, dann verhindert man das zuverlässig.
 
G

Guest

Gast
Murray hat gesagt.:
tfa hat gesagt.:
Anonymous hat gesagt.:
Frage:
Warum wurde Math dann nicht als abstract Klasse deklariert?
Dadurch erreicht man auch, dass kein Objekt von Math erzeugt werden kann.

Wenn sie abstrakt wäre, könnte man eine Subklasse davon ableiten. So könnte man doch
Objekte vom Typ "Math" erzeugen, was sinnlos ist.

Von einer abstrakten Klassen kann man nur dann erfolgreich (also ohne Compile-Fehler) eine anderen Klasse ableiten, wenn die abstrakte Klasse mindestens einen nicht als "private" deklarierten Konstruktor hat. Daher wird es von manchen als sinnlos angesehen, abstrakte Klassen mit lediglich privaten Konstruktoren zu definieren .

Abstrakte Klassen sind solche, die zwar grundsätzlich instanziierbar sind, aber eben nur in Form einer Ableitung. Möchte man sicherstellen, dass eine Klasse niemals instanziiert werden kann, dann ist das Schlüsselwort "abstract" nicht das Mitttel der Wahl; wenn man stattdessen alle Konstruktoren als "private" deklariert, dann verhindert man das zuverlässig.
------------------------------------------------------
Könnte man nicht auch folgendes machen, um zu verhindern, dass von einer Klasse kein Objekt erzeugt werden kann:
Die Klasse abstract _und_ final machen.
Mit abstract kann von der Klasse kein Objekt erzeugt werden.
Mit final kann von einer Unterklasse dieser Klasse kein Objekt erzeugt werden (weil man keine Unterklasse bilden kann).

mfg
ErnstC
 
S

SlaterB

Gast
echt toll, das Posting direkt davor komplett zu zitieren, welches selber schon den gleichen Quatsch gemacht hat,

abstract und final zusammen ist zufälligerweise gerade in Java verboten ;)
 
M

maki

Gast
abstract heisst, man sollte von dieser Klasse erben.
final heisst, man darf von dieser Klasse nicht erben.

Deswegen sind die beiden Schlüsselwörter im Verbund nicht zugelassen.
 

Quaxli

Top Contributor
Abstract bedeutet eigentlich, daß man diese Klasse nicht instanziieren kann und daher erben MUSS ;)
Dabei ist man meistens gezwungen vorhandene abstrakte Methodenrümpfe mit Leben zu füllen.
 
M

maki

Gast
Quaxli hat gesagt.:
Abstract bedeutet eigentlich, daß man diese Klasse nicht instanziieren kann und daher erben MUSS ;)
Dabei ist man meistens gezwungen vorhandene abstrakte Methodenrümpfe mit Leben zu füllen.
Naja, statische Methoden können schon aufgerufen werden, diese werden aber bekanntlich nicht vererbt ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Potenzieren mit rationalen Potenzen ohne Math.pow Allgemeine Java-Themen 16
Arif Math.cos liefert komische Werte Allgemeine Java-Themen 8
T Math.random Allgemeine Java-Themen 9
Javafan01 Deklarieren einer Math.random() Zufallszahl Allgemeine Java-Themen 16
O Best Practice Laufzeitvergleich Math.sqrt() aus Java und sqrt() aus C++ Allgemeine Java-Themen 1
J Methoden Math.abs Allgemeine Java-Themen 3
so_ein_Komischer Erste Schritte java Math Klasse finden? Allgemeine Java-Themen 2
J Commons Math 3.0 Multiple Regression Allgemeine Java-Themen 4
S OOP Apache Commons Math - Verwendung von Genetics - Wie werden Daten in Chromosomen gespeichert? Allgemeine Java-Themen 4
U Math.Random anders verteilen Allgemeine Java-Themen 4
V Math.log auf meine Art zu ungenau Allgemeine Java-Themen 15
H Math.acos(10) => NaN Allgemeine Java-Themen 11
h0b0 WTF? - Problem mit Math.pow() Allgemeine Java-Themen 6
A Wird Math.sin bzw. sinus auf Maschinencode abgebildet Allgemeine Java-Themen 6
isowiz Unerklärliches Problem mit Math.pow :( Allgemeine Java-Themen 4
M Math-String-Formel berechnen lassen Allgemeine Java-Themen 4
C Math.random() vs Random Allgemeine Java-Themen 5
S Random() vs Math.random Allgemeine Java-Themen 4
H Math.random() Allgemeine Java-Themen 3
D java.lang.Math fehlerhaft? Allgemeine Java-Themen 18
Zrebna Wieso sollte man Null-Prüfungen nicht mit Optional-Objekten nutzen? Allgemeine Java-Themen 13
kodela Textfeld nicht rechteckig Allgemeine Java-Themen 10
G Doppelklick auf Javaprogramm klapt nicht Allgemeine Java-Themen 1
W Timer terminiert nicht Allgemeine Java-Themen 5
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
W Überflüssige Deklaration vermeiden...war da nicht mal was? Allgemeine Java-Themen 3
N lwjgl kann textureSampler nicht finden Allgemeine Java-Themen 4
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
T .Jar kann man nicht ausführen Allgemeine Java-Themen 18
P JDK nicht installiert in Net Object Fusion Allgemeine Java-Themen 7
D Image bewegt sich nicht nach Klicken auf Button Allgemeine Java-Themen 15
N Regex schlägt nicht an Allgemeine Java-Themen 10
Y Wieso krieg ich die Unit Tests nicht hin Allgemeine Java-Themen 55
D Erste Schritte Mp3 Datei kann nicht von der Festplatte geöffnet werden - mit ChatGPT erstellt Allgemeine Java-Themen 7
G Popup wird nicht sichtbar Allgemeine Java-Themen 9
8u3631984 Funktions Parameter mit Lombok "NonNull" annotieren wird in Jacococ Testcoverage nicht herausgefiltert Allgemeine Java-Themen 3
kodela String kann nicht zu Pfad konvertiert werden Allgemeine Java-Themen 16
M Apache Proxy Weiterleitung auf Tomcat funktioniert nicht wie gewünscht Allgemeine Java-Themen 1
Momo16 Brauche Hilfe - Java Projekt kann nicht erstellt werden Allgemeine Java-Themen 12
OnDemand ApacheCommon FTP Client zuckt nicht Allgemeine Java-Themen 3
T JavaPoet - (noch) nicht existente Typen Allgemeine Java-Themen 2
E Es ist nicht möglich, eine Batch-Anweisung auszuführen. Allgemeine Java-Themen 9
C Was passt hier nicht bei der Calendar-Class Allgemeine Java-Themen 2
T Testing JUnit5: try ... catch arbeitet nicht sauber Allgemeine Java-Themen 6
W While Schleife funktioniert nicht ganz Allgemeine Java-Themen 4
OnDemand MemoryLeak nicht zu finden Allgemeine Java-Themen 26
torresbig Website login Problem - Jsoup, wie bisher, klappt nicht! Allgemeine Java-Themen 31
H do-while Schleife funktioniert nicht wie ich es möchte Allgemeine Java-Themen 7
ERlK JDA Code funktioniert nicht? Allgemeine Java-Themen 4
OnDemand Ram Freigabe erfolgt nicht nach Prozessende Allgemeine Java-Themen 18
OnDemand XML desializing Attribute bringt nicht erwartetes Ergebnis Allgemeine Java-Themen 16
T ImageIcon wird nicht angezeigt Allgemeine Java-Themen 6
N JAVA-Code mit Grafikfenster zeichnet in Windows, aber nicht Mac. Allgemeine Java-Themen 4
stormyark TikTakToe funktioniert nicht Allgemeine Java-Themen 10
N Warum wird die For Schleife nicht betreten Allgemeine Java-Themen 4
Tiago1234 Hauptklasse konnte nicht gefunden oder geladen werden Allgemeine Java-Themen 38
T Remove bei ArrayList funktioniert nicht Allgemeine Java-Themen 2
M Map<String,String>funktioniert nicht richtig Allgemeine Java-Themen 4
I "Neues" Lizenzmodell Oracle - JRE nicht mehr zur Redistribution freigegeben? Allgemeine Java-Themen 16
J c Programm läuft nicht in compilierter Version des Java Projektes Allgemeine Java-Themen 7
A code wird nicht ausgeführt Allgemeine Java-Themen 3
Blender3D Alte Beiträge nicht mehr vorhanden Allgemeine Java-Themen 6
M Warum hat Java dieses und jenes nicht... Allgemeine Java-Themen 8
W Bilder werden in App mit Jar-Datei nicht angezeigt Allgemeine Java-Themen 15
Micha43 Applet *.jar läuft nicht auf dem Mac Allgemeine Java-Themen 8
M Warum bekommen ich den Result nicht ? Allgemeine Java-Themen 17
Kiki01 Häufigster Buchstabe lässt sich nicht ermitteln Allgemeine Java-Themen 30
OnDemand RegEx /compilebekomme nicht die erwarteten Werte Allgemeine Java-Themen 9
HerrBolte Seltsamer Fehler nur in der Windows- und nicht in der Java-Console O_O Allgemeine Java-Themen 16
P String.replace() funktioniert nicht? Allgemeine Java-Themen 3
N nicht einsehbarer Fehler im code, kann nicht mehr übersetzten Allgemeine Java-Themen 51
P Karate API Test läuft nicht durch . initializationError Allgemeine Java-Themen 21
N nicht static und auch nicht new Allgemeine Java-Themen 3
Z macOS java konnte nicht entfernt werden xpc verbindungsfehler Allgemeine Java-Themen 4
T Schaltfläche wird nicht gefunden Allgemeine Java-Themen 4
boschl2000 Springerproblem-Implementierung funktioniert nicht richtig Allgemeine Java-Themen 1
F Getter Methode aufrufen funktioniert nicht Allgemeine Java-Themen 1
N Gierigen Regex in nicht-gierigen umwandeln Allgemeine Java-Themen 4
N Regulärer Ausdruck funktioniert nicht Allgemeine Java-Themen 6
AleXusher Hauptklasse startlösung konnte nicht gefunden oder geladen werden Allgemeine Java-Themen 1
G @PostConstruct Annotation nicht mehr gültig ? Allgemeine Java-Themen 7
L Objekte in Set nicht gefunden Allgemeine Java-Themen 13
T Projekt baut nicht mehr/lässt sich nicht mehr ausführen Allgemeine Java-Themen 6
izoards log4j2 will nicht.... Allgemeine Java-Themen 15
Tobero Meine Funktion für das beinhalten eines Punktes in einem Kreis funktioniert nicht Allgemeine Java-Themen 5
1Raini Java if-Abfrage funktioniert nicht! Allgemeine Java-Themen 3
D Firebase retrieve data Problem, Child Element wird nicht angesprochen Allgemeine Java-Themen 0
I serialVersionUID - explizit vergeben oder nicht? Allgemeine Java-Themen 6
MiMa Vorhandenes das nicht existiert?? Allgemeine Java-Themen 7
LimDul Hä? Lambda-Ausdruck geht, Methoden-Referenz nicht Allgemeine Java-Themen 8
O Jar lässt sich auf bestimmten Pc nicht starten Allgemeine Java-Themen 18
T Fremde Typen mockt man nicht? Allgemeine Java-Themen 3
Killunox MaxHeap Zuweisung unter Linux funktioniert nicht Allgemeine Java-Themen 1
LimDul Direktes return eines Array geht nicht Allgemeine Java-Themen 20
B neuroph hält beim XOR lernen nicht an Allgemeine Java-Themen 13
kodela JDialog zeigt Text nicht an Allgemeine Java-Themen 5
Dann07 Java-Programm findet DLLs nicht! Allgemeine Java-Themen 20
D Twitch API mit HttpURLConnection läuft nicht? Allgemeine Java-Themen 0
M Test geht auf Travis und mit Github Action schief aber nicht lokal Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben