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

Dedenie a vlakna – Java – Fórum – Programujte.comDedenie a vlakna – Java – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
vreckovka
~ Anonymní uživatel
12 příspěvků
1. 12. 2011   #1
-
0
-

Dobry den, pri programovanie som narazil na zaujimavy problem. Vytvoril som dve vzorove triedy.

public class Dvojka extends Jednotka{
    
	public Dvojka(){
	}
	
	@Override
	public void run(){
		super.run();
		System.out.println("RUN DVOJKA");
	}
	
}
public class Jednotka implements Runnable {

	public Jednotka(){
		new Thread(this,"MOJ THREAD").start();
	}
	
	@Override
	public void run() {
	   System.out.println("RUN JEDNOTKA");
		
	}
	
	public static void main(String [] args){
		new Dvojka();
	}

}

Na vypise dostanem:

RUN JEDNOTKA
RUN DVOJKA

Nechapem jednej veci. Ako je mozne, ze sa mi spustila aj metoda run() v triede Dvojka? Vedel by mi to niekto vysvetlit, popripade dat nejaky odkaz, kde by som sa o tomto  mohol docitat?

Nahlásit jako SPAM
IP: 88.212.40.–
Reklama
Reklama
liborb
~ Redaktor
+18
Guru
1. 12. 2011   #2
-
0
-

Vytvořil si instanci třídy Dvojka a v implementaci run voláš super.run nebo-li voláš funkci run v rodičovské třídě, a tou je Jednotka.

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 82.145.210.–
vreckovka
~ Anonymní uživatel
12 příspěvků
1. 12. 2011   #3
-
0
-

tak ano tomu chapem.. viem ako pracuje super... len mne ide skor o to, ze ked som to programoval tak som predpokladal, ze sa spusti iba metoda run v triede jednotka. Vychadzal som z toho, ze v konstruktore Jednotka vytvaram nove vlakno, kde ako prvy parameter davam this. Ako ak to spravne chapem, tak ked dedim a v rodicovskej triede pouzijem this, tak v tom this sa nebude nachadzat objekt rodica, ale objekt potomka ktory dedil rodica? V tomto pripade sa v this nebude nachadzat objekt triedy Jednotka, ale objekt triedy Dvojka? preto sa najprv vola metoda run v triede Dvojka? 

Nahlásit jako SPAM
IP: 88.212.40.–
liborb
~ Redaktor
+18
Guru
1. 12. 2011   #4
-
0
-

this zastupuje aktuální objekt. Děláš instanci třídy Dvojka, tak dle principu polymorfismu se volá implementace run v této třídě. A v ní voláš implementaci v rodičovské třídě, to je to super, které znáš.

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 82.145.209.–
werixon0
Návštěvník
1. 12. 2011   #5
-
0
-

Kdyz si odmyslime, ze je to docela prasecky napsany, tak to muzeme vysvetlit podle definice dedicnosti konstruktoru. Cituji:" Pokud konstruktor(potomek) explicitne nevola konstruktor nadtridy, vlozi kompilator Java automaticky volani na konstruktor nadtridy bez atgumentu.......". Takze. Ty volas instanci  new Dvojka(). V konstruktoru nic neni, tak se vlozi ten z tridy Jednotka(). Tam je zahajeno vytvoreni vlakna a this ted nebukazuje na instanci Jednotka, ale na instanci Dvojka. Metoda start() zahaji spusteni metody run()  ve tride dvoja(nebude prekryta) a tam je konecne volano super.run() ze tridy Jednotka. A dal to znas...... 

Nahlásit jako SPAM
IP: 88.102.175.–
vreckovka
~ Anonymní uživatel
12 příspěvků
2. 12. 2011   #6
-
0
-

Ja som to nejak podvedome robil v tom, ze ked dam this tak musim spustit medotu z tej triedy v ktorej ten this je.. Nejak som si neuvedomil ze pri dedeni to platit v podstate ani nemoze.. Ok, dakujem za odpovede, myslim ze tomu uz chapem :) 

Nahlásit jako SPAM
IP: 88.212.40.–
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, 30 hostů

Podobná vlákna

Dedenie — založil vit

Dedenie z interfacu — založil mnn

C++ dedenie triedy — založil Marbulinek

Dedenie vlastnej class — založil bozole_sk

Moderátoři diskuze

 

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