Înainte de a putea continua să avanseze în studiul dvs. Java, aveți nevoie să învățați despre clasa. Clasa este esența Java. Este baza pe care toată limba Java este construită deoarece clasa definește natura unui obiect. Ca atare, clasa formează baza pentru programarea orientată pe obiecte în Java.
În cadrul unei clase sunt definite datele și codul care acționează asupra acestor date. Codul este conținut în metode. Deoarece clasele, obiectele și metodele sunt fundamentale pentru Java, le detaliem aici. Având o înțelegere de bază a acestor caracteristici vă va permite să scrieți mai multe programe sofisticate și să înțelegeți mai bine anumite elemente cheie ale Java, care sunt descrise mai jos.
masa de conținut
1. Ce este o clasă
Deoarece toată activitatea programului Java apare într-o clasă, am folosit cursuri de la începutul acestui curs. Desigur, au fost doar clase extrem de simple și nu am beneficiat de majoritatea caracteristicilor sale. După cum vedeți, clasele sunt substanțial mai puternice decât cele limitate prezentate până acum.
Ce este o clasă? O clasă este un șablon care definește forma unui obiect. Specificați datele și codul care va funcționa în aceste date. Java folosește o specificație de clasă pentru a construi obiecte. Obiectele sunt cazuri ale unei clase. Prin urmare, o clasă este, în esență, un set de planuri care specifică modul de construire a unui obiect.
Este important să fii clar că o clasă este o abstracție logică .
2. Forma generală a unei clase
Când definiți o clasă, declarați forma și natura exactă. Pentru aceasta, specificați variabilele de instanță pe care le conține și metodele care operează în ele. Deși clasele foarte simple pot conține numai metode sau numai variabile de instanță, cele mai multe clase din lumea reală conțin ambele.
div Id = „8ADFF8F377”>
O clasă este creată la utilizarea cuvântul cheie. Iată o formă generală simplificată a unei definiții de clasă:
class NombreClase{ //Declarar variables de instancia tipo var1; tipo var2; //.. //Declarar métodos tipo metodo1(parámetros){ //Cuerpo del método } tipo metodo2(parámetros){ //Cuerpo del método }}
Deși nu există o regulă sintactică care trebuie îndeplinită, o clasă bine concepută ar trebui să definească A și doar o entitate logică. De exemplu, o clasă care stochează numele și numerele de telefon nu va stoca în mod normal informații despre piața bursieră, precipitațiile medii sau alte informații independente. Punctul de aici este că o grupare de clasă bine concepută sunt conectate logic. Puneți informații care nu sunt legate de aceeași clasă va structura rapid codul dvs.
până la acest punct, clasele pe care le-am folosit au o singură metodă :. În curând veți vedea cum să creați alții. Cu toate acestea, observați că forma generală a unei clase nu specifică o metodă. O metodă este necesară numai dacă clasa respectivă este punctul de plecare pentru programul dvs. În plus, unele tipuri de aplicații Java nu necesită a.
3. Definiția unei clase
Pentru a ilustra clasele, vom dezvolta o clasă care încapsulează informații despre vehicule, cum ar fi Automobile, furgonete și camioane. Această clasă este numită un vehicul și va stoca trei elemente de informații despre un vehicul: numărul de pasageri pe care îl puteți transporta, capacitatea dvs. de combustibil și cantitatea medie de combustibil consumată (în mile pe galon).
P > Apoi, sunt definite trei variabile de instanță: pasageri, capacitate și MPG. Rețineți că vehiculul nu conține nicio metodă. Prin urmare, este în prezent un fel de date.
class Vehiculo{ int pasajeros; //número de pasajeros int capacidad; //capacidad en galones int mpg; //consumo de combustible en millas por galón}
O definiție de clasă creează un nou tip de date. În acest caz, noul tip de date se numește vehicul. Veți folosi acest nume pentru a declara obiecte de tip de vehicul. Amintiți-vă că o declarație de clasă este doar o descriere a tipului; Nu creați un obiect real. Astfel, codul precedent nu face obiectul tipului de vehicul în existență.
4. Cum este creat un obiect?
Pentru a crea într-adevăr un obiect de vehicul, utilizați o instrucțiune cum ar fi următoarele:
Vehiculo minivan = new Vehiculo(); //Creando un objeto vehículo llamado minivan
După ce această declarație este rulată, minivan se referă la o instanță a vehiculului. Prin urmare, va avea realitatea „fizică”. În prezent, nu vă faceți griji cu privire la detaliile acestei declarații.
De fiecare dată când se creează o instanță a unei clase, un obiect care conține propria copie a fiecărei variabile definite de clasă este creată.
Astfel, fiecare obiect al vehiculului va conține propriile copii ale variabilelor instanței pasagerilor, capacității și MPG. Pentru a accesa aceste variabile, operatorul punct (.) Va fi utilizat. Operatorul principal leagă numele unui obiect cu numele unui membru. Forma generală a operatorului punct este prezentată aici:
Objeto.Miembro
Prin urmare, obiectul este specificat în partea stângă, iar elementul este pus pe dreapta. De exemplu, pentru a atribui variabila de capacitate pentru a miniva la valoarea 16, utilizați următoarea instrucțiune:
minivan.capacidad = 16
În general, puteți utiliza operatorul punct pentru a accesa Variabile și metode de instanță. Iată un program complet care utilizează clasa
/* Un programa que usa la clase Vehiculo El archivo se llama DemoVehiculo.java */class Vehiculo { int pasajeros; //números de pasajeros int capacidad; //capacidad del combustible en galones int mpg; //combustible consumido en millas por galon}//Esta clase declara un objeto de tipo Vehiculoclass DemoVehiculo { public static void main(String args) { Vehiculo minivan = new Vehiculo(); int rango; //asignando valores a los campos de minivan minivan.pasajeros = 9; minivan.capacidad = 15; minivan.mpg = 20; //Calcular el rango asumiendo un tanque lleno rango = minivan.capacidad * minivan.mpg; System.out.println("La Minivan puede llevar " + minivan.pasajeros + " pasajeros con un rango de " + rango + " millas"); }}
ieșire:
La Minivan puede llevar 9 pasajeros con un rango de 300 millas
trebuie Sunați la fișierul care conține acest program de vehicule, deoarece metoda principală este în clasa numită vehicul, nu în clasa numită vehicul.
Când compilați acest program, veți găsi că două fișiere au a fost creată. Clasa, una pentru vehicul și altul pentru vehicul. Compilatorul Java plasează automat fiecare clasă în propriul fișier .class. Nu este necesar ca ambele vehicule cât și clasa vehiculului să se afle în același fișier sursă. Ar putea pune fiecare clasă în dosarul propriu, numit Vehiculodemo.java și Vehiculodemo.java, respectiv.
5. Crearea mai multor obiecte
Înainte de a continua, Să revizuim un principiu fundamental: fiecare Obiect are propriile copii ale variabilelor de instanță definite de clasa lor. Astfel, conținutul variabilelor dintr-un obiect poate fi diferit de conținutul variabilelor în alta.
Nu există nicio legătură între cele două obiecte, cu excepția faptului că ambele sunt obiecte de același tip. De exemplu, dacă aveți două obiecte de vehicule, fiecare are propria copie a pasagerilor, capacității și MPG, iar conținutul acesteia poate diferi între cele două obiecte.
Următorul program demonstrează acest fapt. (Rețineți că clasa se numește acum dozare.)
divid id = „4417bf8a4b”>
ieșire:
6. Variabilele de referință și atribuire
Într-o operație de alocare, variabilele de referință obiect acționează diferit de variabilele unui tip primitiv, ca int.
- când un tip primitiv Variabila este atribuită altui, situația este simplă. Variabila din stânga primește o copie a valorii variabilei din dreapta.
- Prin atribuirea unei variabile de referință obiect la altul, situația este un pic mai complicată deoarece schimbă obiectul la care este se referă la variabila de referință. Efectul acestei diferențe poate provoca rezultate contraintuitive.
De exemplu, notați următorul fragment:
Vehiculo auto1 = new Vehiculo();Vehiculo auto2 = auto1;
la Prima privire, este ușor să credeți că Auto1 și Auto2 se referă la diferite obiecte, dar acest lucru nu este cazul. În schimb, Auto1 și Auto2 se vor referi la același obiect. Alocarea Auto2 Auto2 face pur și simplu AU2, consultați același obiect ca și Auto1. Astfel, obiectul poate fi acționat de oricare dintre Auto1 sau Autom. De exemplu, după alocare
auto1.mpg = 28;
Dacă executați, ambele instrucțiuni cu PrintLNN ():
System.out.println(auto1.mpg);System.out.println(auto2.mpg);
Ghici ce? Aceeași valoare este afișată: 28.
Deși Auto1 și Auto2 se referă la același obiect, nu sunt legați în nici un alt mod. De exemplu, o alocare post-auto2 modifică pur și simplu obiectul la care se referă AUT2. De exemplu:
div id = „e1d4ed0a08”>
auto2 = auto3; //Ahora auto2 y auto3 se refieren al mismo objeto
Dacă ați rămas o îndoială, vă rugăm să comentați. Ne vedem în curând!