Static a "podtridy" – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Static a "podtridy" – Java – Fórum – Programujte.comStatic a "podtridy" – Java – Fórum – Programujte.com

 

insider0
Věrný člen
30. 1. 2008   #1
-
0
-

zdravim,

mam +- nasledujici strukturu:

public class abc{


bbb prmn;

class aaa{}
class bbb{}

public static void main(){
aaa promenna = new aaa(); // <--- chyba je tady
}

}


a netbeans mi hazou chybu "non-static variable this cannot be referenced from a static context"
kdyz prepisu na public void main, tak mi netbeans vypise "class abc does not have a main method"



a jeste jedna otazecka:
jak funkci predat "odkaz" na promennou, kdyz nahodim priklad z php, tak

function fce(&$prom){}

...
$prm = "";
fce(&$prm);


tedy to co udelam s promennou $prom ve funkci se "promitne" do promenne $prm

Nahlásit jako SPAM
IP: 78.102.32.–
I don't want to see you go,[br] The sky is over[br] Even though we can't afford[br] The sky is over,[br] The sky is over us.[br][br] CIVILIZATION IS OVER
JanKodera0
Newbie
31. 1. 2008   #2
-
0
-

Java myslim predava odkazem rovnou.

A k vasi prvni otazce.
Proc pouzivate inner classes ? Je to nutne? Netbeans rvou zcela po pravu, ty inner classes nejsou staticke. Jedna z moznosti jak to udelat je ze

public class abc{

bbb prmn;
public void abc(){
aaa prom = new aaa();
prmn = new bbb();
}

class aaa{}

class bbb{}



public static void main(){

abc promenna = new abc();

}

}


Proste volani tech inner classes zabalite do hlavni tridy. Ale i tak mi neni zcela jasne k cemu je potrebujete. Lepe by bylo kdybyste je delal jako normalni tridy. Budete tak mit i prehlednejsi kod.

Nahlásit jako SPAM
IP: 213.220.245.–
insider0
Věrný člen
31. 1. 2008   #3
-
0
-

diky za odpovedi, odzkousim v brzke dobe

mam omezene moznosti, jak ten program udelat a zaroven by mel jit co nejrychleji, ty tridy pouzivam spis jako struktury, urcite to neni optimalni reseni, ale s mou znalosti javy a s moznostmi, ktere mam, me jiny zpusob nenapada

Nahlásit jako SPAM
IP: 78.102.32.–
I don't want to see you go,[br] The sky is over[br] Even though we can't afford[br] The sky is over,[br] The sky is over us.[br][br] CIVILIZATION IS OVER
JanKodera0
Newbie
31. 1. 2008   #4
-
0
-

Poslete to sem, jake struktury potrebujete a podivam se na to. Pokud to teda neni extra tajne.

Nahlásit jako SPAM
IP: 213.220.245.–
insider0
Věrný člen
31. 1. 2008   #5
-
0
-

je to struktura pro strom, takze zkracene: (aktualni podoba, tedy inner class)

class VytvorStrom{


class Uzel{
Uzel potomek;
Uzel rodic;
//a nejake intovske promenne
}

class Strom{
Uzel koren;
String naStrom;
}

public void VytvorStrom(String retez){
Strom strom = new Strom();
strom.naStrom = retez;
// dalsi metody ...
}

//puvodne jeste
public static void main(){}
}

Nahlásit jako SPAM
IP: 78.102.32.–
I don't want to see you go,[br] The sky is over[br] Even though we can't afford[br] The sky is over,[br] The sky is over us.[br][br] CIVILIZATION IS OVER
JanKodera0
Newbie
31. 1. 2008   #6
-
0
-

Fajn. Reseni je jednoduche. Ty vnitrni tridy se stanou obycejnymi java tridami. Pokud budou vsechny v jednom package, nevidim zadny problem.



package tree;

public class VytvorStrom {
private Strom strom;
/** Creates a new instance of VytvorStrom */
public VytvorStrom(String retez) {
setStrom(new Strom());
getStrom().setNaStrom(retez);
Uzel uz = new Uzel();
//Prvni uzel nema rodice, tak mu soupneme null objekt.
uz.setRodic(null);
getStrom().setKoren(uz);
}

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
VytvorStrom vs = new VytvorStrom("strom");
System.out.println(vs.getStrom().getKoren().getRodic());
}

public Strom getStrom() {
return strom;
}

public void setStrom(Strom strom) {
this.strom = strom;
}

}


Zbyle tridy jsem pripojil jako prilohu. Staci je nakopirovat do netbeans.

Co se tyce uzivani private a public, tak vcelku zalezi jen na vas. Tam kam jsem soupnul private muzete dat public. Nic se nestane.

Nahlásit jako SPAM
IP: 213.220.245.–
insider0
Věrný člen
31. 1. 2008   #7
-
0
-

diky za pomoc, private/public vim/znam, takze to neni problem

Nahlásit jako SPAM
IP: 78.102.32.–
I don't want to see you go,[br] The sky is over[br] Even though we can't afford[br] The sky is over,[br] The sky is over us.[br][br] CIVILIZATION IS OVER
insider0
Věrný člen
31. 1. 2008   #8
-
0
-

takze tridy uz mi jedou, ale to predavani "odkazem" moc nejde

public void abc(Uzel uzl,String str,boolean hledani){ // hledani je true;

Uzel nUz;
while(hledani)
nUz = bcd(uzl,hledani);
}

public Uzel bcd(Uzel uzl,boolean hledani){
hledani = false;
...
return uzl;
}

Nahlásit jako SPAM
IP: 78.102.32.–
I don't want to see you go,[br] The sky is over[br] Even though we can't afford[br] The sky is over,[br] The sky is over us.[br][br] CIVILIZATION IS OVER
JanKodera0
Newbie
31. 1. 2008   #9
-
0
-

Musel jsem se na to podivat, protoze si take vsechno nepamatuju. Ale predavani odkazem nejede proto, ze boolean je datove primitivum a nikoliv objekt a odkazem se predavaji pouze pole a objekty. Takze vytvorte z toho boolean hledani objekt a bude se predavat odkazem.

Nahlásit jako SPAM
IP: 213.220.245.–
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žit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 2 hosté

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý