NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Teorie konečné metody

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Lubor Pešek
Člen
Avatar
Lubor Pešek:12.6.2017 18:27

Zdravíčko,

Mám trošku dilema ohledně konečných metod. Dočetl jsem se, že je konvence nastavovat modifikátor přístupu u konečné metody na soukromý. Vcelku nechápu, k čemu to tak je, vždyť přece pokud je metoda už konečná, tak ji nelze přepsat, tudíž žádné riziko při "zviditelnění" nehrozí a neporušuju tím ani zásady zapouzdření.

Takže proč je taková konvence?
(PS: odpovědi typu, protože to tak je nebo aby měl strýček František radost si prosím ušetřete)

Odpovědět
12.6.2017 18:27
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
Odpovídá na Lubor Pešek
Neaktivní uživatel:12.6.2017 19:13

Není ta konvence opačně? Nastavovat privátní metody jako final (což, jak jsem se dočetl, je zbytečné, pač private metody jsou implicitně final). A modifikátor tam dáš podle toho, zda je to pro veřejné použití nebo jenom interní použití. Kdes na takovou konvenci narazil?

Nahoru Odpovědět
12.6.2017 19:13
Neaktivní uživatelský účet
Avatar
Atrament
Člen IT Redactor Gang
Avatar
Odpovídá na Lubor Pešek
Atrament:12.6.2017 19:26

Dočetl jsem se, že je konvence nastavovat modifikátor přístupu u konečné metody na soukromý.

Kde ses takový klenot dočetl? :)

 
Nahoru Odpovědět
12.6.2017 19:26
Avatar
Lubor Pešek
Člen
Avatar
Odpovídá na Neaktivní uživatel
Lubor Pešek:12.6.2017 20:33

V knížce od Rudy Pecinovského.

Právě mě se to taky nezdá a proto s tím lezu na forko. Nechápu, proč (jestli to vůbec teda) tak je. Vím, že to není extra závažný problém, ale zajímá mě to, abych do světa vypouštěl kvalitní kódy.

Takže jak teda? je jedno, když už použiju konečnou metodu, jaký jí dám modifikátor přístupu, nebo je zásadní rozdíl, jestli je potomkům zviditelním? stejně nic jiného než použít takovou metodou nemůžou.

Nahoru Odpovědět
12.6.2017 20:33
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
Atrament
Člen IT Redactor Gang
Avatar
Odpovídá na Lubor Pešek
Atrament:12.6.2017 21:16

Jestli jsem si nemyslel, že to bude Pecinovský :) Jako je to určitě machr a určitě rozumí Javě dost dobře, ale jeho knížky já osobně fakt nemusím, právě proto, že si v nich často zavádí jakési vlastní názvosloví, konvence, a občas i podivné teorie. Takže bych ho bral být tebou s velmi velkou rezervou.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
12.6.2017 21:16
Avatar
Odpovídá na Lubor Pešek
Neaktivní uživatel:12.6.2017 21:27

Je metoda pro vnější použití? -> public/default. Je metoda určená k překrytí dědícími třídami, pokud nějaké jsou? -> final. Je pouze pro vnitřní použití? -> private (a tedy implicitně final).

Myslím, že final a modifikátor přístupu na sobě nejsou závislé - ty určíš účel a oblast užití dané metody.

Navíc pokud je metoda final, je její volání mírně optimalizované (nemusí se vytvářet struktury a tabulky na případné volání overridů - alespoň tak je to v .NET, Java to má pokud vím principielně podobné).

Nahoru Odpovědět
12.6.2017 21:27
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Neaktivní uživatel:12.6.2017 21:32

Je metoda určená k překrytí dědícími třídami, pokud nějaké jsou? -> final

Samozřejmě naopak - pokud NENÍ určena k overridu -> final.

Nahoru Odpovědět
12.6.2017 21:32
Neaktivní uživatelský účet
Avatar
Lubor Pešek
Člen
Avatar
Odpovídá na Neaktivní uživatel
Lubor Pešek:12.6.2017 21:38

jj dělal jsem si performance test a vážně jsou konečné metody rychlejší - přesně jak říkáš.

Ok chlapi, dík za reakce:) Sám vím, jaké to je luštit po někom prase kód, tak proto se zabývám takovýmito detaily, abych do té kategorie nepatřil:D
s
díkes a čaute.

Nahoru Odpovědět
12.6.2017 21:38
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.
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 8 zpráv z 8.