Nacitanie pola z inej triedy – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Nacitanie pola z inej triedy – Java – Fórum – Programujte.comNacitanie pola z inej triedy – Java – Fórum – Programujte.com

 

lama
~ Anonymní uživatel
33 příspěvků
18. 3. 2012   #1
-
0
-

Zdravim, 

mam nasledujucu situaciu:

class A{

String[] string = new String[10];

{

class B{

}

A teraz otazka. ako mozem pristupit k hodnotam v poli string v triede A z triedy B? 

daka

Nahlásit jako SPAM
IP: 85.135.174.–
michal
~ Anonymní uživatel
683 příspěvků
18. 3. 2012   #2
-
0
-

#1 lama
co takto ? funguje ?

package pokusy;

public class Pokusy {

    public static void main(String[] args) {

        A a = new A();
        B b = new B();
        b.getString();

    }
}

class A {

    String[] string = new String[10];

    public String[] getString() {
        return string;
    }
   
   
}

class B extends A {

    @Override
    public String[] getString() {
        return super.getString();
    }
   
       
}

Nahlásit jako SPAM
IP: 78.45.113.–
sleepy0
Stálý člen
18. 3. 2012   #3
-
0
-

Mozes, ale musis najskor vediet kde sa to pole nachadza a samozrejme musi exisotvat. Cize bud odosles pointer na to pole priamo do B alebo aspon na A. Cize videl by som to asi takto:

// toto moze byt v hociakom classe, ale tako cez ktory budes pristupovat do programu
public static main(String arg[]){
	A a = new A(10);
	// vlozis nejaky text
	B b = new B(a);
	C c = new C(a.text);
	b.nacitaj(3);
	c.nacitaj(8);
}

class A {
	String[];
	
	public A(int n) {
		text = new String[n];
	}

	public void vlozText(String retzec){
		// nejaky kod na vkladanie
	}
}

class B {
	A a;
	public B(A a) {
		this.a = a;
	}
	
	public String nacitaj(int i) {
		return a.text[i];
	}
}

class C {
	String[] text;
	
	public C(String[] text) {
		this.text = text;
	}

	public String nacitaj(int i) {
		return text[i];
	}
}

pripadne ak by bolo pole String[] typu static tak mozes priamo a to A.text[i].

Nahlásit jako SPAM
IP: 213.215.67.–
Antilles0
Stálý člen
28. 3. 2012   #4
-
0
-

Řekněme že na chvilku zapomeneme na zapouzdření. To pole Stringů v třídě A je instanční atribut, takže abys k němu mohl přistupovat, musíš vytvořit objekt třídy A.

Třeba takto:

class A{
	String[] pole = new String[20];
}

class B{
	public void vypisStringZTridyA(){
 		A instance = new A();
		for(int i = 0; i < instance.pole.length; i++){
			System.out.println(instance.pole[i]);
		}
	}
}


Pokud se to zdá divné, složité a já nevím co všecko, tak je to proto, že tohle nemá smysl. Vytvářet třídu s jedním instančním atributem nemá smysl, pokud k němu nechceš ještě implementovat nějaké metody (a i na to by se asi víc hodila knihovní třída).

#2 michal
To podle mého vůbec neřeší jeho problém, pokud jsem ho správně pochopil. Pokud bude mít v main() jak jsi to napsal v objektu A nějaké stringy, b.getString() vypíše String z objektu B a ne z A.

Nahlásit jako SPAM
IP: 77.48.30.–
Dejte mi flétnu a já budu hrát, dejte mi Javu a já budu psát.
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, 20 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ý