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 | 1553 (1321) | abyssus |
» | android črtaOddelek: Programiranje | 2434 (1705) | g333kk |
» | [Java] System.out.print = nullOddelek: Programiranje | 783 (705) | Spura |
» | [Android]GridView vprasanjeOddelek: Programiranje | 972 (853) | KernelPanic |
» | PHP razredi in konstruktorjiOddelek: Izdelava spletišč | 1639 (1490) | JesusChrist |