Hi, vytvorila jsem nasledujici kod:
1. trida (zakladni, ta by mela byt v poradku):
public class Person {
private String name ;
private String lastname ;
public Person ( String name , String lastname ) {
this.name = name ;
this.lastname = lastname ;
}
public final String getName () {
return lastname + ", " + name ;
}
public String toString () {
return getName ();
}
}
2.trida: (odvozena -> ta ma byt rozsirena o adresu, o konstruktor (ktery obsahuje jmeno,prijmeni,adresu) a o vystup na konsoli - jmeno, prijmeni, adresu):
public class PersonAdresa {
private String adresa;
private String name;
private String lastname;
public PersonAdresa (String name, String lastname, String adresa ) {
// ????? udaje name a lastname se tady opakuji, to je zbytecne, ale nevim jak ty dve tridy spravne propojit
/ ?????
this.name = name;
this.firstname = firstname;
this.adresa = adresa ;
}
public final String getAdresa () {
return adresa ;
}
public String toString () {
return getAdresa ();
}
public void setAdresa(String adresa){
this.adresa = adresa;
}
public static void main (String[] args){
PersonAdresa josef = new PersonAdresa ("Josef","Hes","Most");
PersonAdresa marie = new PersonAdresa ("Marie","Soukupova","Praha");
System.out.println (josef);
}
}
Predem dekuji za rady.
Dagi
Fórum › Java
Konstruktor z jine tridy
Tak po chvilce trápení mi to nakonec funguje takhle :)
public class Person {
protected String name;
protected String lastname;
public Person(String name, String lastname) {
this.name = name;
this.lastname = lastname;
}
public final String getName() {
return lastname + ", " + name;
}
@Override
public String toString() {
return getName();
}
}
public class PersonAdresa extends Person {
private String adresa;
public PersonAdresa(String name, String lastname, String adresa) {
super(name, lastname);
this.name = name;
this.lastname = lastname;
this.adresa = adresa;
}
public final String getAdresa() {
return adresa;
}
@Override
public String toString() {
return getAdresa();
}
public void setAdresa(String adresa) {
this.adresa = adresa;
}
}
Podle mě u zděděné třídy už nemusíš v konstruktoru znovu nastavovat name a lastname, to se provede v konstruktoru rodiče zavoláním super (name, lastanme).
public PersonAdresa(String name, String lastname, String adresa) {
super(name, lastname);
this.adresa = adresa;
}
To Wideman : Potvrzuji že to takhle fakt funguje ... nějak mě nenapadlo po sobě kontrolovat konstruktor co mi vygenerovalo IDE.
To Dagi : Pomocí super můžeš zavolat jakoukoliv funkci rodiče (veřejnou nebo chráněnou).
Zjistit počet nových příspěvků
Přidej příspěvek
Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
Uživatelé prohlížející si toto vlákno
Uživatelé on-line: 0 registrovaných, 31 hostů
Podobná vlákna
Změna vlastnosti třídy Windows1 z jiné třídy — založil davedpe
C++ - Třídy (Export funkcí z třídy do jiné) — založil CodeHustla
Pozastaveni vlakna z jine tridy — založil polerok
Volání metody jiné třídy — založil Matěj_
C# Výpis hodnoty z jiné třídy — založil itlady
Moderátoři diskuze