» »

[Java] Konstruktor v dedovanem razredu

[Java] Konstruktor v dedovanem razredu

shadeX ::

Ja spet sem naletel na problem in sicer:

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..)

shadeX ::

@metalc hvala ti. Sedaj razumem. Kar me je zmotilo je to, ker na strani od jave piše točno tako:

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 ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Dependency Injection

Oddelek: Programiranje
71553 (1321) abyssus
»

android črta

Oddelek: Programiranje
412434 (1705) g333kk
»

[Java] System.out.print = null

Oddelek: Programiranje
6783 (705) Spura
»

[Android]GridView vprasanje

Oddelek: Programiranje
12972 (853) KernelPanic
»

PHP razredi in konstruktorji

Oddelek: Izdelava spletišč
81639 (1490) JesusChrist

Več podobnih tem