Descriere extinsă a clasei

Și acest cod va fi compilat. Dacă utilizați NetBeans, atunci când construiți proiectul, veți avea un director build / classes în care puteți găsi două fișiere de clasă - numele lor sunt identice cu numele de clase. Acum, să încercăm să ne dăm seama de ce ar putea fi necesară această descriere.
Astfel de clase "închise" puteți folosi DOAR în același pachet în care sunt. Deci, puteți descrie o clasă pe care nimeni nu o va vedea. Că în anumite situații este convenabil. De exemplu, creați o clasă a cărei logică de lucru este împărțită convenabil în mai multe clase. Ie este convenabil să declarăm încă una și mai multe clase. Dar, pe de altă parte, este mai bine să nu știi despre aceste clase auxiliare altor clase din alte pachete. Encapsularea la nivelul clasei 🙂
Nu vă sugerez acum să vă grăbiți să veniți în situații în care ați putea avea nevoie de ea - de îndată ce veți intra în această situație, veți ști că există o asemenea oportunitate de a declara o clasă.
Când câștigi experiență, devii suficient de des pentru a afla pur și simplu despre existența oricăror mecanisme interesante, tehnologii, desene sau modele - deja "ghiciți" că "acest lucru este curios și trebuie să fie amintit sau poate să fiți rușinat". Experiența utilizării concrete este al doilea pas. Nu funcționează întotdeauna așa cum este descris în documentație.

Clase născute

pachet edu. javacourse. mulți;

clasa publica ResearchClass

clasa privată InternalOne

clasa protejată InternalTwo

clasa publica InternalFour

statică clasă privată internăStaticOne

statică clasă protejată InternalStaticTwo

clasa statică InternalStaticThree

statică clasă publică InternStaticFour

public void testInternal ()

InternalOne inOne = new InternalOne ();

InternalTwo inTwo = noul InternalTwo ();

InternalThree inThree = noul InternalThree ();

InternalFour inFour = new InternalFour ();

InternalStaticOne inStOne = noul InternalStaticOne ();

InternalStaticTwo inStTwo = noul InternalStaticTwo ();

InternalStaticThree inStThree = noul InternalStaticThree ();

InternalStaticFour inStFour = noul InternalStaticFour ();

Notați linia 6 - unde creați un obiect din clasa SimpleAbstract. Uită-te foarte Atenuat - acolo la capăt sunt ORGANELE FIGURA. Nu am primit clasa SimpleAbstract. și succesorul său este o clasă anonimă care nu mai este abstractă. Prin urmare, sa dovedit. Iată un astfel de caz curios.

iniţializarea

În această secțiune, voi vorbi despre un mecanism foarte convenabil pentru setarea valorilor inițiale ale câmpurilor pentru un obiect și o clasă. Dacă mergeți înainte, sarcina de a stabili valorile inițiale este atât de importantă încât pentru ea nu a fost inventată și implementată o tehnologie și o bibliotecă. Dar nu vom merge atât de departe în profunzime până acum - doar să ne cunoaștem câteva caracteristici ale limbajului Java.
Deci, după cum probabil vă amintiți, am folosit deja două opțiuni pentru a seta valorile câmpului:

În plus față de aceste metode, puteți utiliza încă unul (în două versiuni):

  1. Bloc de inițializare statică
  2. Blocarea inițializării entității (obiect)

transfer

Enums sunt un alt mecanism convenabil care a apărut în versiunea 1.5 a versiunii Java. Este adesea convenabil să se descrie într-un program un anumit set de constante finite. De exemplu, lista de planete ale sistemului solar, zilele săptămânii etc. Pe de o parte, este lipsit de sens un set dinamic - setul este destul de bine stabilit. Pe de altă parte, descrierea mai multor constante nu este, de asemenea, cea mai bună soluție. De exemplu, pentru zilele săptămânii, o astfel de opțiune nu arată foarte bine:

Variabila wd cu tipul de enumerare, mai întâi atribuim valoarea "LUNA". În metoda println (nici măcar nu știu cum să o numesc), inițializez variabila deja declarată cu o nouă valoare: FRĂTĂȚI, dar nici măcar nu menționez metoda overridden toString. Rezultatul: "Vineri Opa!".
Am încercat doar să experimentez - compilatorul nu a dat o greșeală. Aș vrea să înțeleg de ce funcționează și cum se numește.

Când apelați System.out.println (), toți parametrii din paranteze sunt convertiți în șiruri de caractere. Pentru o clasă (și pentru enum), este un apel toString ().

Ei bine ... Se pare că a meritat un pic de suferință și a citit capitolul "Soluții bazate pe clase" - există un răspuns la această întrebare 🙂

Articole similare