|
|||||||
|
|
|
![]() |
|
|
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: 19:47.




















