Forum » Programiranje » [Java] Konstruktor v dedovanem razredu
[Java] Konstruktor v dedovanem razredu

shadeX ::
Ja spet sem naletel na problem in sicer:
Imam razred:
In bi rad naredil pač nov razred, ki bi bil otrok tega razreda. To naredim tako:
Vendar mi eclipse vrača naslednji problem:
A to pomeni da če starš vsebuje konstruktor, ga mora imeti tudi otrok? Kaj lahko v tem primeru naredim..
Imam razred:
public class RegularWatch {
private double time = 24;
private boolean isWaterProof = false;
public String waterP;
public RegularWatch(double t, boolean wP) {
this.time = t;
this.isWaterProof = wP;
this.getWaterProofInfo();
}
public double getTime() {
return time;
}
public boolean wpBool() {
return isWaterProof;
}
public String getWaterProofInfo() {
if(isWaterProof == false) {
waterP = " is not waterproof";
} else {
waterP = " is waterproof";
}
return waterP;
}
public void writeOut() {
System.out.println("This watch shows time "+ time + " and "+ waterP);
}
}
In bi rad naredil pač nov razred, ki bi bil otrok tega razreda. To naredim tako:
public class SportsWatch extends RegularWatch {
}
Vendar mi eclipse vrača naslednji problem:
Implicit super constructor RegularWatch() is undefined for default constructor. Must define an explicit constructor
A to pomeni da če starš vsebuje konstruktor, ga mora imeti tudi otrok? Kaj lahko v tem primeru naredim..

metalc ::
Tako je. Če ozpeljan razred nima eksplicitno definiranga konstruktorja, se bo poskušal klicati staršev privzeti konstruktor (brez parametrov). V tvojem primeru takšnega nimaš, zato napaka.
Domnevam, da bi rad izpeljan razred vzpostavil z enakimi parametri kot starševskega. V tem primeru pač izpeljanemu razredu narediš konstruktor, ki sprejme te iste parametre in v njem kličeš super(par1, par2..)
Domnevam, da bi rad izpeljan razred vzpostavil z enakimi parametri kot starševskega. V tem primeru pač izpeljanemu razredu narediš konstruktor, ki sprejme te iste parametre in v njem kličeš super(par1, par2..)

shadeX ::
@metalc hvala ti. Sedaj razumem. Kar me je zmotilo je to, ker na strani od jave piše točno tako:
Tuki piše You CAN, ne pa you MUST!
What can you do with subclass:
.
.
.
.
-You can write a subclass constructor that invokes the constructor of the superclass, either implicitly or by using the keyword super
Tuki piše You CAN, ne pa you MUST!

Senitel ::
Konstruktor od base classa se MORA klicat. Če imaš v base classu konstruktor, ki nima parametrov, potem se lahko pokliče implicitno. Ti ga nimaš in ga torej moraš klicat eksplicitno, ker se drugače base class ne more skonstruirat.

Marat ::
Itak da moraš imet konstruktor, tu sploh ni dileme
A ti ne eclipse že avtomatično da možnost "add unimplemented methods" ali pa "add constructor"? Ime classa bi ti moralo biti podčrtano z rdečo, če ti manjka konstruktor...

Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Dependency InjectionOddelek: Programiranje | 1581 (1349) | abyssus |
» | android črtaOddelek: Programiranje | 2487 (1758) | g333kk |
» | [Java] System.out.print = nullOddelek: Programiranje | 799 (721) | Spura |
» | [Android]GridView vprasanjeOddelek: Programiranje | 1007 (888) | KernelPanic |
» | PHP razredi in konstruktorjiOddelek: Izdelava spletišč | 1681 (1532) | JesusChrist |