Minulla on abstrakti luokka Tunnus, jonka käännös menee läpi ja siellä abstrakti metodi kysyKaikki(). Edellisestä perityssä Henkilotunnus-luokassa on metodi:
public String kysyKaikki()
{
return(this.Hetu);
}
Asiakas-luokassa on allaoleva metodi.
/**Palauttaa kaikki asiakkaaseeen liittyvät tiedot.
* @return Tiedot merkkijonomuodossa: nimi, tunnus, yhteystiedot.
*/
public String kysyKaikki()
{
String sKaikkiTiedot= this.kysyNimi() "(" this.Tunnus.kysyKaikki() ")";
if(this.Osoitetiedot!=null)
sKaikkiTiedot = sKaikkiTiedot ";" this.Osoitetiedot.kysyKaikki();
return(sKaikkiTiedot);
}
Kaikki mainitut luokat ovat samassa asiakkaat pakkauksessa. Tunnus ja Henkilotunnus menevät käännösestä läpi, mutta Asiakas-luokkaa kääntäessä käännös pysähtyy ja saan ilmoituksen:
cannot find symbol variable Tunnus.
Mikä vikana??
public String kysyKaikki()
{
return(this.Hetu);
}
Asiakas-luokassa on allaoleva metodi.
/**Palauttaa kaikki asiakkaaseeen liittyvät tiedot.
* @return Tiedot merkkijonomuodossa: nimi, tunnus, yhteystiedot.
*/
public String kysyKaikki()
{
String sKaikkiTiedot= this.kysyNimi() "(" this.Tunnus.kysyKaikki() ")";
if(this.Osoitetiedot!=null)
sKaikkiTiedot = sKaikkiTiedot ";" this.Osoitetiedot.kysyKaikki();
return(sKaikkiTiedot);
}
Kaikki mainitut luokat ovat samassa asiakkaat pakkauksessa. Tunnus ja Henkilotunnus menevät käännösestä läpi, mutta Asiakas-luokkaa kääntäessä käännös pysähtyy ja saan ilmoituksen:
cannot find symbol variable Tunnus.
Mikä vikana??
Vastaukset 1
Vanhimmat
String sKaikkiTiedot= this.kysyNimi() "(" this.Tunnus.kysyKaikki() ")";
Virhe kertookin jo kaiken olennaisen:
"Mikä halavattu symboli tää Tunnus on?"
this.Tunnus tarkoittaa sitä, että Asiakas-luokasta pitäis löytyä tollanen muuttuja kun Tunnus. Eihän abstraktista luokasta Tunnus ikinä edes kutsuta mitään metodeja, koska toteutukset on aina niissä perivissä luokissa.
this.Osoitetiedot.kysyKaikki();
Ei taida löytyä tollasta muuttujaakaan Osoitetiedot sieltä Asiakas-luokasta?