Otazky

Předmět zaměřený na praktické programování v jazyku a prostředí Java
Návštěvník

Otazky

Příspěvek od Návštěvník »

Ahoj, chtel bych se zeptat ohledne otazky 4c z ukazkoveho testu na wiki. Otazka zni:
int[] a, b[];
* A definuje jeden skalar a jedno pole intu
* B nejde prelozit
* C jedno 1-dim pole a jedno 2 dim pole
Jako odpoved bych videl:
C jedno 1-dim pole a jedno 2 dim pole
Co myslite? Kdyztak se ptejte i na dalsi otazky...
test

Re: Otazky

Příspěvek od test »

ano, tak je spravna odpoved (muzes si to vyzkouset zejo :) ).

jak by podle vas bylo spravne napsane: Naprogramujte: V main vytvorete vlakno, kter vypise "TEXT" a spustte ho.

ja bych to delal tak ze v main bude jen
new TextThread();

a v TextThread.java bude:

Kód: Vybrat vše

public class TextThread extends Thread{
    public TextThread() {
        start();
    }

    public void run() {
           System.out.println("TEXT");
     }
    }
}
ale treba to chapu spatne..
Návštěvník

Re: Otazky

Příspěvek od Návštěvník »

Zkousel jsem tento:
class A {
public static void foo() {
System.out.println("foo");
}
}

class B extends A {
public static void foo() {
System.out.println("bar");
}
}

main:
A a = new A();
A b = new B();

a.foo();
b.foo();
Z jakeho duvodu se zavola dvakrat foo z tridy A? Nemelo by se diky virtualnosti zavolat v druhem pripapde foo z tridy B? Diky!
Acris
Matfyz(ák|ačka) level I
Příspěvky: 20
Registrován: 26. 1. 2010 14:28
Typ studia: Informatika Mgr.
Bydliště: Praha

Re: Otazky

Příspěvek od Acris »

Návštěvník píše:Zkousel jsem tento:
class A {
public static void foo() {
System.out.println("foo");
}
}

class B extends A {
public static void foo() {
System.out.println("bar");
}
}

main:
A a = new A();
A b = new B();

a.foo();
b.foo();
Z jakeho duvodu se zavola dvakrat foo z tridy A? Nemelo by se diky virtualnosti zavolat v druhem pripapde foo z tridy B? Diky!
Podstatné je, že ta funkce je static, tedy se nepojí ke konkrétní instanci, ale k typu, který je A.
JiriD
Matfyz(ák|ačka) level I
Příspěvky: 44
Registrován: 2. 2. 2008 09:35
Typ studia: Informatika Bc.

Re: Otazky

Příspěvek od JiriD »

Nebo-li, statické funkce nejsou virtuální.

Jenom puntičkářská připomínka k těm vláknům: Nezapomenout na import java.lang.Thread;
Wenn ich morgen meinem Gott gegenüberstehe, kann ich sagen:
Ich bin unschuldig,
ich habe niemanden betrogen,
ich habe niemandem weh getan,
ausser mir selbst.

Und das wird er mir wohl verzeihen!
DM

Re: Otazky

Příspěvek od DM »

JiriD píše:Nebo-li, statické funkce nejsou virtuální.

Jenom puntičkářská připomínka k těm vláknům: Nezapomenout na import java.lang.Thread;
Věci z java.lang se nemusí importovat. Já bych to napsal třeba takto:

Kód: Vybrat vše

public class Test {
    public static void main(String[] argv) {
        new Thread () {
            public void run() {
                System.out.println("TEXT");
            }
        }.start();
    }
}
Betlista
Matfyz(ák|ačka) level I
Příspěvky: 24
Registrován: 21. 11. 2007 14:59
Typ studia: Informatika Mgr.

Re: Otazky

Příspěvek od Betlista »

V Jave sú principiálne 2 spôsoby ako vytvoriť vlákno, tak ako tu už bolo ukázané - oddedením z Thread.

Druhým spôsobom je implementovaním rozhrania Runnable, takto:

Kód: Vybrat vše

		new Thread(
			new Runnable() {
				@Override
				public void run() {
					System.out.println( "runnable" );
				}
			}
		).start();
Je potreba si uvedomiť, že nie vždy budete mať možnosť zmeniť hierarchiu tried. Vtedy keď si zmyslíte že potrebujete aby niečo bolo vláknom, tak nebude možné oddediť od triedy Thread (ako iste viete, tak v Jave je jednoduchá dedičnosť) a potom sa to urobí tak, že o danej triede prehlásite, že implementuje Runnable a jej inštanciu potom spustíte podobne ako je to ukázané vyššie, len s tým rozdielom, že tam som použil anonymnú triedu.

:!: Volanie start() v konštruktore by som nedoporučoval, aj keď to síce funguje (ako sa zdá), tak život vlákna je definovaný spôsobom, že vlákno končí keď sa ukončí vykonávanie metódy run(), lenže v tomto prípade konštruktor (vytváranie inštancie) skončí neskôr ako metóda run(), čo je dosť podivné.
Odpovědět

Zpět na „PGR013 Java“