„Autor, u Java kodu koji si mi ranije pokazao, ima public, static, void, main i tako dalje — to su svi ključne reči, zar ne?" na licu Sanmej se pojavlja slatka osmeh, mislim da je u učenju Jave postala sve samopouzdanija.
- AI210
- Java jezgro128
- Java enterprise razvoj30
- Java osnove19
- Jezgro Jave19
- Java razvoj na nivou preduzeća17
- PDF16
- Java core11
- Sajt10
- Putanja učenja10
- Posao i intervju9
- Posao i intervjui7
- Java srž6
- Vodič za učenje5
- Tehnički članci5
- Saveti za traženje posla5
- MySQL4
- Planovi učenja4
- Traženje posla4
- Strategija za traženje posla4
- Razvoj/alati za izgradnju3
- Preokret intervjua3
- Intervju pobeda3
- Osnove računarstva2
- Baze podataka2
- Redis2
- Ostali sajtovi2
- Drugi sajtovi2
- Traženje posla i razgovori2
- Intervju-pobeda2
- Tehnički članak2
- Javni WeChat nalog1
- Razvoj/alatke za izgradnju1
- Razvoj/build alati1
- Segmentfault1
- Java u enterprise razvoju1
- Škola početnika1
- Akademija za početnike1
- Juejin zajednica1
- Traženje posla i intervjui1
- Pobeđivanje na intervjuu1
- Mianzini Nixi1
- Pobeda na intervjuu1
- Prevazilaženje na razgovoru1
- Preokret intjuvijanja1
- Intervju-preokret1
- Povratak intervjua1
- Preokret na intervjuu1
- Protivnapad na intervjuu1
- Preokret kandidata1
- Priprema za intervju1
- Kandidat1
- Poboljšanje intervjua1
- tehnicki clanci1
- tehnički članak1
- AI alat1
Prepisivanje (Overriding) je vrlo važan koncept u Javi, razumevanje šta je prepisivanje vrlo je važno za svakog Java programera, ovaj članak će vam reći koja pravila treba poštovati pri prepisivanju.
01, Što je prepisivanje?
Prepisivanje donosi vrlo važnu sposobnost, omogućava podklasi da ponovo implementira metodu nasleđenu iz superklase. U sledećoj slici, Animal je nadklasa, Dog je podklasa, Dog ponovo implementira move() metodu za razlikovanje od nadklase, budući da psi ipak imaju poseban način trčanja.
„Autor, danas ćemo govoriti o napomenama?" pita Sanmej.
„Da." kažem. „Napomene su veoma važan deo Jave, ali često se zanemaruju, to je stvarno tako. Razlog za to je što smo skloniji da budemo korisnici napomena nego njihovi kreatori. Siromašta koristio @Override napomenu? Koristio si je pri redefinisanju metoda. Ali znaš li da definišeš sopstvenu napomenu?"
U objektnom modelu Jave:
- Sve klase su instance klase Class, Object je klasa, pa je Object takođe instanca klase Class.
- Sve klase se na kraju nasleđuju od klase Object, Class je klasa, pa se Class takođe nasleđuje od Object.
Pa da li je prvo postojala Class ili Object? Kako JVM rešava ovaj „kokošji" problem?
„Brate, čuo sam da svaki osnovni tip podataka u Javi ima odgovarajuću omotnu klasu, na primer int omotnu klasu Integer, double omotnu klasu Double, tačno tako?" Iz rečenice Sanmej može se naslutiti da je unapred naučila ovaj sadržaj.
TENNIS", 0); FOOTBALL = new PlayerType("FOOTBALL", 1); BASKETBALL = new PlayerType("BASKETBALL", 2); $VALUES = (new PlayerType[] { TENNIS, FOOTBALL, BASKETBALL }); } }
„Videli ste? Java kompajler je za nas uradio mnogo implicitnog rada, inače ručno pisanje enumeracije ne bi bilo tako lako i jednostavno.“
- Treba naslediti Enum klasu;
- Treba pisati konstruktorsku metodu;
- Treba deklarisati statičke promenljive i nizove;
- Treba koristiti statički blok za inicijalizaciju statičkih promenljivih i nizova;
- Treba pružiti statičke metode, na primer `values()` i `valueOf(String name)`.
„Zaista, kao programeri, naša količina koda je smanjena, enumeracija izgleda jednostavno i jasno.“ Sanmej je rekla.
„Budući da je enumeracija specijalna klasa, ona se zapravo može definisati unutar jedne klase, time njen opseg može biti ograničen na korišćenje u ovoj spoljnoj klasi.“ rekao sam.
```java
public class Player {
private PlayerType type;
public enum PlayerType {
TENNIS,
FOOTBALL,
BASKETBALL
}
public boolean isBasketballPlayer() {
return getType() == PlayerType.BASKETBALL;
}
public PlayerType getType() {
return type;
}
public void setType(PlayerType type) {
this.type = type;
}
}
„Autor, čitam knjigu „Effective Java“, u 11. pravilu piše da pri pisanju equals metode mora pisati hashCode metodu, zašto je to?“ Sanmej je otvoreno pitala.
„Sanmej, ovo je vrlo dobro pitanje, jer je to takođe tačka znanja koja se često ispituje na intervjuima. Danas ću ti objasniti.“ rekao sam.
„Autor, možeš mi reći zašto je String immutable klasa (nepromenljivi objekat)? Želim da to istražujem, želim da znam zašto je nepromenljiva, ovako snažna želja je kao išao da istražujem beskrajne zvezde. Ali nažalost, moja moć je ograničena, uvek se osećam da gledam kroz maglu.“ Sanmejina rečenica je puna laskanja.
„Autor, kakve su konvencije imenovanja u Javi?“ Sanmej je na licu imala slatki osmeh, počela je da se nada sadržaju koji sledi, i ovo je upravo ono što me čini veselim.
„Za nas Kineze, imena su takođe važna, na primer ja se zovem Marko Marković, a ti se zoveš Petar Petrović, haha.“ zabavljao sam se sa Sanmej.
„Autor, nedavno čitam izvorni kod znakovnih nizova u Java 11, primetio sam veliku razliku u odnosu na Java 8.“ Lice Sanmej je bilo puno mladalačkog osmeha😊, slatko je rekla: „Izvorni kod String klase je optimizovan iz char[] u byte[] za čuvanje sadržaja znakovnog niza, zašto se to radi?“
