Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



Call to super must be first statement in constructor

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: Call to super must be first statement in constructor

Autor: xxxObiWan

23:23:56 12.05.2011

Všem děkuju, moc jste mi pomohli ;-)

Citovat příspěvek

 

RE: Call to super must be first statement in constructor

Autor: polakm

14:41:59 12.05.2011

> Smaz to void:
[MP:] Ale smažte void u všech konstruktorů (2x Osoba, 1x Rodic)

Asi bych to měl lépe vysvětlit.

Tím void jste definoval že se jedná o metody vracející void (konstruktory "nevracejí nic"), které se jmenovaly stejně jako třída (není to zvykem. Zvykem je, že se tak jmenují pouze konstruktory).

A proto vám NetBeans psaly

constructor Osoba in class observerExample.Osoba cannot be applied to given types;
required: no arguments
found: java.lang.String,java.lang.String

Tím chtěly říct, že předek, tj. Osoba, má pouze defaultní bezparametrický konstruktor, a vy se dožadujete konstruktoru s dvěma parametry....



Příspěvek zaslán emailem

Citovat příspěvek

 

RE: Call to super must be first statement in constructor

Autor: polakm

14:26:41 12.05.2011

> Smaz to void:

[MP:] Ale smažte void u všech konstruktorů (2x Osoba, 1x Rodic)

> A mas pravdu, z ty hlasku su taky ne vetvi.

[MP:] Píše to i Eclipse..... :-)

Je zapotřebí opravit volání v tom prvním Osoba konstruktoru. Už se nejedná o provolání žádné metody, že....

Tohle už projde bez kompilační chyby:

public class Osoba
{
protected String jmeno;
protected String bydliste;

public Osoba()
{
this("neuvedeno", "");
}

public Osoba(String jmeno, String bydliste)
{
//this.setJmeno(jmeno);
//this.setBydliste(bydliste);
}


}

public class Rodic extends Osoba
{
//protected Ucet ucet;

public Rodic(String jmeno, String bydliste, Ucet ucet)
{
super(jmeno, bydliste); //zde mi NetBeans hází chybu
//this.ucet = ucet;
}

}


Příspěvek zaslán emailem

Citovat příspěvek

 

Re: Call to super must be first statement in constructor

Autor: Maaartin

13:38:25 12.05.2011

Smaz to void:

public void Rodic(String jmeno, String bydliste, Ucet ucet)

=>

public Rodic(String jmeno, String bydliste, Ucet ucet)

A mas pravdu, z ty hlasku su taky ne vetvi.

Citovat příspěvek

 

Call to super must be first statement in constructor

Autor: xxxObiWan

13:09:30 12.05.2011

Dobrý den,
řeším právě jeden úkol do školy, a zasekl jsem se na jedné (podle mě nesmyslné) chybě.

Třída Osoba:
[quote]public class Osoba
{
protected String jmeno;
protected String bydliste;

public void Osoba()
{
this.Osoba("neuvedeno", "");
}

public void Osoba(String jmeno, String bydliste)
{
this.setJmeno(jmeno);
this.setBydliste(bydliste);
}

...

}[/quote]

Třída Rodic:
[quote]public class Rodic extends Osoba
{
protected Ucet ucet;

public void Rodic(String jmeno, String bydliste, Ucet ucet)
{
super(jmeno, bydliste); //zde mi NetBeans hází chybu
this.ucet = ucet;
}

}[/quote]

V řádku, kde volám metodu super(), mi NetBeans zobrazí chybu:
[bold][ital]constructor Osoba in class observerExample.Osoba cannot be applied to given types;
required: no arguments
found: java.lang.String,java.lang.String
reason: actual and formal argument lists differ in length

call to super must be first statement in constructor[/ital][/bold]

Pokud smažu parametry [ital]jmeno[/ital] a [ital]bydliste[/ital] (zavolám jen [ital]super();[/ital] bez parametrů), vyhodí to zase chybu, tentokrát jen:
[bold][ital]call to super must be first statement in constructor[/ital][/bold]

Prosím o pomoc, přijde mi to jako nesmysl co ten NetBeans píše :-)

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: