NOVINKA: Staň se datovým analytikem od 0 Kč a získej jistotu práce, lepší plat a nové kariérní možnosti. Více informací:

Diskuze – Lekce 11 - Statika

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
vfsdfsdfdsf
Člen
Avatar
vfsdfsdfdsf:15.1.2014 19:16

Ahoj, u toho výpisu s Tomášem Marným (mimochodem dost dobré :D ) je menší chybička - místo System.out.println má být System.out.format - a za tím %s ještě %n pro odřádkování, ale je to jen drobnost, která snad nikoho nevyvede z míry (teda pokud to poctivě čtou a zkoušejí :D ).

 
Odpovědět
15.1.2014 19:16
Avatar
Kit
Tvůrce
Avatar
Kit:15.1.2014 19:36

Proč vlastně v třídě Kalendar vytváříš 7 stringových objektů místo jednoho? Není to plýtvání?

Odpovědět
15.1.2014 19:36
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na vfsdfsdfdsf
David Hartinger:15.1.2014 20:15

Díky, pak na to mrknu.

Odpovědět
15.1.2014 20:15
New kid back on the block with a R.I.P
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:15.1.2014 20:16

Jo, byl by tam lepší jeden, při revizi to upravím.

Odpovědět
15.1.2014 20:16
New kid back on the block with a R.I.P
Avatar
madrlukas
Člen
Avatar
madrlukas:9.4.2015 16:41

Statické proměnné a metody lze volat i na instanci, ne pouze na třídě. Sice mě NetBeans předem upozorní(žárovkou vedle řádku), že přistupuju ke statické proměnné, nicméně program se provede bez chyby a vypíše proměnnou/vrátí hodnotu metody. Jelikož je v článku několikrát výslovně uvedeno, že statické metody lze volat pouze na třídě, tak jsem dost zmaten. Měl byste někdo k tomu nějaké vysvětlení? Popřípadě mohl byste mě vyvést z iluze..?

 
Odpovědět
9.4.2015 16:41
Avatar
roman64
Tvůrce
Avatar
roman64:23.6.2015 16:04

Máš pravdu. Já jsem byl z počátku také zmaten. Na druhou stranu, pokud používáš seznam možností Netbeans (ctrl+space nebo tečka za názvěm proměnné -instance), tak jako možnost ti tu static proměnnou NENABÍDNE!

Řešit by se to dalo přes get:
public static int getMinimalniDel­kaHesla() {return minimalniDelka­Hesla;}

a z main pak volat:
System.out.prin­tf("Minimalni dalka hesla je %s znaku",Uzivatel­.getMinimalni­DelkaHesla()); // metodu volat přes název třídy! (nikoliv instance)

Mělo by to být "in compliance" neboť tuto metodu ti Netbeans nabídne.

Odpovědět
23.6.2015 16:04
Definice šílenství je dělat stejnou věc znovu a znovu a očekávat jiné výsledky.“ Albert Einstein.
Avatar
Lubor Pešek
Člen
Avatar
Lubor Pešek:15.1.2016 14:29

No, ale teď jsi jasně i na svém příkladu dokázal, že statická metoda nelze být volána z již vytvořené instance, ale z třídy:)
toto prostě nejde:

...
Uzivatel u = new Uzivatel(..);
u.STATICKA_METODA();
...

a jen tak pár drobností, a hned ta první je na přesdržku ode mě, ale jsem puntičkář:D

Uzivatel u = new Uzivatel("Tomáš Marný", "heslojeveslo");
System.out.printf("ID prvního uživatele: %s\n", u.vratId());
Uzivatel v = new Uzivatel("Olí Znusinudle", "csfd1fg");
System.out.printf("ID druhého uživatele: %s\n", v.vratId());
System.out.printf("Minimální délka hesla uživatele je: %s\n", Uzivatel.vratMinimalniDelkuHesla());
System.out.printf("Validnost hesla \"heslo\" je: %s", Uzivatel.zvalidujHeslo("heslo"));

tady ti chybí v posledním řádku za %s i odřádkování:) pak se výstup neshoduje se vzorem:)

No a potom, když se na to upozrňuje všude, tak proč za celou dobu nikdo nepoznamenal, že ve třídě Nastavení máš malé s u Stringu:

class Nastaveni
{
        private static String jazyk = "CZ";
        private static String barevneSchema = "cervene";
        private static boolean spustitPoStartu = true;

        private Nastaveni()
        {
        }

        public static string jazyk()            <=============== tady tu
        {
                return jazyk;
        }

        public static String barevneSchema()
        {
                return barevneSchema;
        }

        public static boolean spustitPoStartu()
        {
                return spustitPoStartu;
        }

}

jinak pěkné až na ten úvod, říct: "Obecně bych doporučoval statiku vůbec nepoužívat, pokud si nejste naprosto jisti, co děláte".... to platí obecně pro všechno:D a třeba jak jsi i ve svém návodu výstižně podotkl, vytvářet si pomocné třídy (třeba i privátní) proto, abych před třídou něco nastavil nebo aby se mi kalkulovaly instance, tak to by byla zase chyba.
To samé bys mohl říct, že je lepší používat if místo switche, nevím, prostě mi to tak příjde:) možná se pletu, ale to už je pak na každém programátorovi. Pochopitelně druhá věc je, kdyby někdo rval static všude, kde mu to zahlásí chybu, že potřebuje statický atribut/referenci, to pak ano:) ale tyto tutoriály jsou pěkně udělané + názorné příklady, takže počítej spíš s tím, že díky tomuto "vychováš" dobré programátory a ne prasata:D

Odpovědět
15.1.2016 14:29
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
Adam Bucher
Člen
Avatar
Adam Bucher:25.2.2017 1:29

Vím, že jste to tu řešili před víc než jedním rokem, ale nějak jsem tu nenašel vysvětlení...
V článku je napsáno, že statické atributy/metody nelze volat na instanci. Ale podle NetBeans a funkčního programu to lze. Sice, jak už tu někdo psal, to NetBeans nenabídne, ale když si to tam programátor přece jen napíše, program funguje stejně. Tak jak to tedy je?

 
Odpovědět
25.2.2017 1:29
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Adam Bucher
David Hartinger:25.2.2017 12:23

Některé jazyky si to přeberou i když to zavoláš na instanci, ale volá se to samozřejmě pořád na třídě.

Odpovědět
25.2.2017 12:23
New kid back on the block with a R.I.P
Avatar
Adam Bucher
Člen
Avatar
Odpovídá na David Hartinger
Adam Bucher:25.2.2017 12:40

Jo, myslel jsem si to. Díky za rychlou odpověď.

 
Odpovědět
25.2.2017 12:40
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 32.