|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Apr 2008
Città: MilanoMilano Compravendite: 17
Messaggi: 3564
|
[JAVA] Utilizzo di super() in un costruttore -- senza superclasse.
Buongiorno a tutti, vi do subito il codice completo. Non spaventatevi: la domanda dovrebbe riguardare le sole prime 10 righe:
Codice:
public class Triangolo implements Cloneable{ private double catetoA; private double catetoB; private double ipotenusa; private TipoTriangolo tipo = null; public Triangolo(Double lato) { super(); this.catetoA = lato; this.catetoB = lato; this.ipotenusa = lato; tipo = TipoTriangolo.EQUILATERO; } public Triangolo(Double cateto, Double ipotenusa) { super(); this.catetoA = cateto; this.catetoB = cateto; this.ipotenusa = ipotenusa; if(cateto.doubleValue() == ipotenusa.doubleValue()){ tipo = TipoTriangolo.EQUILATERO; }else tipo = TipoTriangolo.ISOSCELE; } public Triangolo(Double catetoA, Double catetoB, Double ipotenusa) { super(); this.catetoA = catetoA; this.catetoB = catetoB; this.ipotenusa = ipotenusa; if(catetoA.doubleValue() == catetoB.doubleValue() && catetoA.doubleValue() == ipotenusa.doubleValue() ){ tipo = TipoTriangolo.EQUILATERO; }else if(catetoA == catetoB ){ tipo = TipoTriangolo.ISOSCELE; }else tipo = TipoTriangolo.SCALENO; } public Double getPerimetro(){ return catetoB + catetoA + ipotenusa; } private double getSemiPerimetro(){ return getPerimetro()/2 ; } public boolean isIsoscele(){ if(tipo == TipoTriangolo.ISOSCELE) return true; return false; } public boolean isEquilatero(){ if(tipo == TipoTriangolo.EQUILATERO) return true; return false; } public double getArea(){ return Math.sqrt(getSemiPerimetro()*(getSemiPerimetro()-catetoA)*(getSemiPerimetro()-catetoB)*(getSemiPerimetro()-ipotenusa)); } @Override public String toString() { return "Triangolo " + tipo + " [catetoA=" + catetoA + ", catetoB=" + catetoB + ", ipotenusa=" + ipotenusa + "] - Area: "+ (((double)Math.round((this.getArea()*100)))/100)+ " - Perimetro: "+this.getPerimetro(); } public Object clone(){ return new Triangolo(catetoA, catetoB, ipotenusa); } } TipoTriangolo è un ENUM definito a parte. Mi chiedevo per quale motivo, all'inizio dei costruttori, sia stato inserito super(); pur non essendoci nessuna superclasse (come anche nessun costruttore il quale non riceve alcun parametro in ingresso). Vi ringrazio anticipatamente. Ciawa.
__________________
CASE Cooler Master HAF-X & Mod LianLi HYDRO Corsair H100 PSU Corsair AX850W MB ASRock Z170 EXTREME 4
CPU i7 6700K VGA MSI GTX 1080 GAMING X RAM DDR3 2x8GB HyperX SSD OCZ Revodrive 80GB HDD RAID0 WD CB 1Tb DLP Optoma GT720 VR Oculus Rift MISCELLANEOUS 3D Vision 2 + Asus Xonar D2X + Sennheiser |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Dec 2001
Città: Cernobbio -Co-
Messaggi: 47
|
Ogni classe in Java estende la classe Object
http://docs.oracle.com/javase/7/docs...ng/Object.html In altre parole, anche se non definito esplicitamente è come se tu avessi scritto public class Triangolo extends Object implements Cloneable e quel super si riferisce, appunto, al costruttore di Object.
__________________
micheledellatorre.net |
![]() |
![]() |
![]() |
#3 | |
Member
Iscritto dal: Jul 2005
Città: Potenza
Messaggi: 126
|
Quote:
Tuttavia, richiamare il costruttore della superclasse con super() senza passare argomenti è inutile, poiché viene fatto già dalla jvm. Una chiamata del genere all'interno di un costruttore di una sottoclasse ha senso in caso di costruttore con argomenti.
__________________
Un'interfaccia per domarli, un package per trovarli tutti, un riferimento per ghermirli e nel framework incatenarli." Il Signore degli Oggetti ![]() |
|
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Apr 2008
Città: MilanoMilano Compravendite: 17
Messaggi: 3564
|
Ok, ho capito. Grazie ad entrambi.
Quote:
(i.e. Object prevede costruttori con parametri?)
__________________
CASE Cooler Master HAF-X & Mod LianLi HYDRO Corsair H100 PSU Corsair AX850W MB ASRock Z170 EXTREME 4
CPU i7 6700K VGA MSI GTX 1080 GAMING X RAM DDR3 2x8GB HyperX SSD OCZ Revodrive 80GB HDD RAID0 WD CB 1Tb DLP Optoma GT720 VR Oculus Rift MISCELLANEOUS 3D Vision 2 + Asus Xonar D2X + Sennheiser |
|
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Meglio ripeterlo: in Java tutte le classi sono figlie di Object. Object è la radice della gerarchia di classi in Java. Object ha un unico costruttore pubblico senza argomenti. Lo puoi verificare da te consultando i javadoc.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Apr 2008
Città: MilanoMilano Compravendite: 17
Messaggi: 3564
|
Roger that.
![]()
__________________
CASE Cooler Master HAF-X & Mod LianLi HYDRO Corsair H100 PSU Corsair AX850W MB ASRock Z170 EXTREME 4
CPU i7 6700K VGA MSI GTX 1080 GAMING X RAM DDR3 2x8GB HyperX SSD OCZ Revodrive 80GB HDD RAID0 WD CB 1Tb DLP Optoma GT720 VR Oculus Rift MISCELLANEOUS 3D Vision 2 + Asus Xonar D2X + Sennheiser |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:34.