Interviu pe java - oop (întrebări și răspunsuri)

Întrebări și răspunsuri pe tema OOP (programare orientată obiect) pentru un interviu Java.

Lista tuturor întrebărilor OOP

21. De ce am nevoie de un operator?
22. Care sunt nevoile și care sunt blocurile de inițializare?
23. Care este ordinea de a apela constructori și blocuri de inițializare a două clase: descendentul și strămoșul său?
24. Unde și pentru ce este folosit modificatorul abstract?
25. Este posibil să declare o metodă abstractă și statică în același timp?
26. Ce înseamnă câmpul static?
27. Ce construiește Java nu se aplică modificatorul static?
28. Ce se întâmplă dacă apare o excepție în blocul de coduri statice?
29. Este posibilă supraîncărcarea metodei statice?
30. Ce este o clasă statică, care sunt caracteristicile utilizării acesteia?
31. Care sunt caracteristicile inițializării variabilelor statice finale?
32. Cum influențează modificatorul static clasa / metoda / câmpul?
33. Ce înseamnă ultimul cuvânt cheie?
34. Dați definiția "interfață".
35. Ce modificatori au câmpuri de interfață și metode implicite?
36. De ce nu pot declara o metodă de interfață cu un modificator final sau static?
37. Ce tipuri de clase sunt în java (imbricate ... etc)
38. Care sunt caracteristicile creării de clase imbricate: simple și statice.
39. Ce știți despre clasele imbricate, de ce sunt folosite? Clasificare, cazuri de utilizare, încălcarea încapsulării.
40. Care este diferența dintre clasele imbricate și cele interne?
41. Ce clase se numesc anonime?
42. Cum pot accesa un câmp de clasă externă dintr-o clasă imbricată?

Răspunsuri. Partea 1

programarea orientată spre obiecte (OOP) - o metodologie de programare bazată pe noțiunea de program ca un set de obiecte, fiecare dintre acestea fiind o instanta a unei anumite clase și clase formează o ierarhie moștenire.

Principiile de bază ale OOP: abstractizare, încapsulare, moștenire, polimorfism.

Abstractizare înseamnă alocarea de informații semnificative și excluderea de la considerarea unei informații nesemnificative. Din punctul de vedere al programării, aceasta este divizarea corectă a programului în obiecte. Abstracția vă permite să selectați caracteristicile principale și să omiteți cele secundare.

Exemplu: descrierea pozițiilor din companie. Aici, titlul postului este o informație semnificativă, iar descrierea atribuțiilor fiecărui post este o informație secundară. De exemplu, principala caracteristică a "regizorului" este faptul că acest post este gestionat de ceva și ce anume (director de resurse umane, director financiar, director executiv) este deja informație secundară.

Encapsulation este o proprietate a sistemului care vă permite să combinați datele și metodele care lucrează cu ele într-o clasă. Pentru Java, se va spune corect că încapsularea este "ascunsă implementarea". Un exemplu din viață este telecomanda de la televizor. Apăsăm butonul "creștere volum" și crește, dar în acel moment se întâmplă zeci de procese ascunse de noi. Pentru Java: puteți crea o clasă cu 10 metode, de exemplu, calculând zona unei forme complexe, dar faceți 9 privat. Cea de-a zecea metodă va fi denumită "zona de calcul ()" și va fi declarată publică, iar metodele necesare ascunse de utilizator vor fi deja numite în ea. El este cel care va fi chemat de utilizator.

Moștenirea este o proprietate a unui sistem care vă permite să descrieți o nouă clasă pe baza unei clase existente, cu o funcționalitate de împrumut parțial sau total. Clasa din care derivă moștenirea se numește clasa de bază, clasa parentală sau superclama. O clasă nouă este un descendent, un moștenitor, un copil sau o clasă derivată.

Polimorfismul este o proprietate a sistemului de a folosi obiecte cu aceeași interfață fără informații despre tipul și structura internă a obiectului. Un exemplu (ușor modificat) al gândirii în Java:

  • privat (privat) - accesul la un membru al clasei nu este acordat nimănui decât metodelor din această clasă. Alte clase din același pachet nu pot accesa și membrii privați.
  • implicit, pachet, acces prietenos, implicit, atunci când nu există nici un modificator - un membru al clasei este considerat deschis în propriul său pachet, dar nu este disponibil pentru codul situat în afara acestui pachet. dacă pachetul2.Class2 prelungește pachetul1.MainClass. atunci metodele din clasa 2 fără un identificator din MainClass nu vor fi vizibile.
  • protejate (protejate) - accesul în pachet și clase de moștenitori. Accesul în clasă dintr-un alt pachet va fi pentru metodele publice și protejate ale clasei principale. Ie dacă pachetul2.Class2 prelungește pachetul1.MainClass. apoi în interiorul pachetului2. Metode de clasificare2 cu identificatorul protejat de MainClass vor fi vizibile.
  • public (public) - accesul tuturor pentru orice alt cod de proiect

Modificatorii din listă sunt aranjați în creșterea vizibilității în program.

Este imposibil să creați un obiect de clasă care să aibă un singur constructor privat în afara clasei. Prin urmare, nu se poate moșteni dintr-o astfel de clasă. Dacă încercați să moșteniți, veți primi o eroare: Nu există constructor implicit disponibil în ClassName. Și când încercați să creați un obiect din această clasă: ClassName () are acces privat în ClassName

9. Ce spun cuvintele cheie "acest", "super", unde și cum pot fi folosite?

super - folosit pentru a se referi la clasa de bază, și aceasta la cea curentă. exemplu:

10. Dați definiția "metodei".

O metodă este o secvență de comenzi care sunt numite de un nume specific. Puteți spune că aceasta este o funcție și o procedură (în cazul unei metode nevalabile).

11. Care este semnătura metodei?

Semnarea metodei în Java este numele metodei și parametrii (unde ordinea parametrilor contează).
Semnătura metodei nu include valoarea returnată, excepțiile aruncate de ea și, de asemenea, modificatorii.

Cuvinte cheie: public, protejat, privat, abstract, static, final, sincronizat, nativ, strictfp, incl. Adnotările pentru metodă sunt modificatoare și nu fac parte din semnătura.

12. Ce metode se numesc supraîncărcate?

Java vă permite să creați mai multe metode cu același nume, dar cu semnături diferite. Crearea unei metode cu același nume, dar cu un alt set de parametri se numește supraîncărcare. Care dintre metodele supraîncărcate ar trebui să fie executate în timpul apelului, Java determină pe baza parametrilor actuali.

13. Pot suporta static metode statice?

Da. Acestea sunt doar două metode diferite pentru program. Static va fi disponibil după numele clasei.

O metodă într-un succesor de clasă care coincide cu o semnătură dintr-o clasă părinte se numește o metodă de suprascriere. Nu puteți suprascrie metoda statică de bază: Metoda metodei instanței în clasăModul uman nu poate înlocui metoda nameMethod în parentClass

15. Poate metoda să ia un număr diferit de parametri (argumente de lungime variabilă)?

Da. Intrarea are forma formei (tip ... val). De exemplu, metoda public void (String ... strings). unde șirurile sunt o matrice, adică pot fi scrise

În timp ce supraîncărcarea este de obicei folosită pentru a nu inventa de fiecare dată un nume nou, atunci când metodele diferă doar în parametrii de intrare. Atunci când este supraîncărcat, metoda necesară este determinată la etapa de compilare bazată pe semnătura metodei numite, în timp ce atunci când este suprascrisă, metoda va fi detectată la timpul de execuție pe baza tipului real de obiect.

20. Unde pot să inițializez câmpurile statice / non-statice?

6674 Total vizualizari 2 Vizualizari Astazi

32. Cum influențează modificatorul static clasa / metoda / câmpul?
...
Nu puteți crea sau suprascrie un astfel de câmp (este inițializat o singură dată). --- acesta este pentru final static (P.S. Creați un câmp nou.Poate că nu știu ce este)

19. Care este diferența dintre suprasarcină și supraîncărcare?
Principala diferență este că, în cazul metodei de suprasarcină necesară, determinată la momentul compilarii pe baza metodei semnăturii locale, în timp ce metoda suprascrisă dorită va fi dezvăluită în timpul execuției în funcție de tipul actual de obiect.

Transformarea de la descendent la strămoș se numește ascendent, de la strămoși la descendent - descendent. O transformare descendentă trebuie indicată explicit prin specificarea unui tip nou în paranteze.

Transformarea ascendentă (de la strămoș la descendent) se face implicit, descendent (de la descendent la strămoș) - indicând noul tip în paranteze. Corectați-vă.

Toate scrise corect. Upcasting, acesta este de la unele clase la Object obj (de la descendent la strămoș). În schimb, cls = (SomeClass) obj - downcasting (downtrend). Indicat explicit.


public class Test public static void principal (String [] args) A a = nou A ();
B b = nou B ();

a = b; // descendent - de la strămoș la descendent - implicit
b = (B) a; // ascendent - de la descendent la strămoș - în mod evident
>
>

clasa A <>
clasa B se extinde <>

O transformare descendentă trebuie indicată explicit prin specificarea unui tip nou în paranteze.

câine public () <
Sistem. out. println ("A"); // aceasta ar trebui să fie în constructorul de mai jos

câine public (numele șirului) <
Sistem. out. println ("Call constructor empty"); // acesta este în constructorul de mai sus

acest lucru. nume = nume;

16. Este posibil să se restrângă nivelul de acces / tipul valorii returnate atunci când metoda este suprascrisă?
"Când suprascrieți o metodă, nu puteți restrânge modificatorul de acces la o metodă" - modificatorul de acces poate fi extins

Articole similare