- Esminis skirtumas tarp klasės ir objekto yra pagrindas programavimas Objektinis orientavimas Java kalboje
- Klasės yra loginiai šablonai, o objektai – konkretūs atminties egzemplioriai.
- Objektų kūrimas, inicijavimas ir manipuliavimas leidžia struktūrizuoti patikimas ir pakartotinai naudojamas programas.
- „Java“ pavyzdžiai ir geroji praktika aiškiai ir praktiškai apibendrina šias sąvokas.
Programavimo visata, ypač jei kalbame apie Java, iš esmės grindžiamas skirtumu tarp klases y objektai. Tai gali skambėti kaip ta pati sena istorija: teorija vienoje pusėje, praktika kitoje. Tačiau žinoti, kaip atskirti abu ir pritaikyti juos natūraliai Būtent tai ir skiria chaotišką kodą nuo patikimo, elegantiško ir lengvai prižiūrimo kodo. Šio binominio klausimo supratimas apima daug daugiau nei egzaminus ar interviu klausimus: Tai yra bet kurio „Java“ kūrėjo kasdienio gyvenimo dalis ir garsiojo objektinio programavimo (OOP) pagrindas..
Šiame straipsnyje rasite išsamų, aiškų ir su pavyzdžiais paaiškinimą, kas yra... klases, kas jie tokie tiksliai objektai, kaip jie susiję, pranašumas ir galimus šios paradigmos trūkumus, ir, svarbiausia, kaip visas šias žinias pritaikyti praktiškai „Java“ visatoje. Nesvarbu, ar ieškote greitų atsakymų, ar paprasto skirtumų sąrašo, čia rasite daug daugiau: išsamią, praktinę apžvalgą su realaus pasaulio niuansais, kuri bus naudinga tiek pradedantiesiems programuotojams, tiek patyrusiems programuotojams, norintiems patobulinti savo požiūrį.
Kas yra objektinis programavimas ir kodėl jis svarbus Java kalboje?
Centrinis kalbų ramstis, pvz. Java yra Objektinis programavimas (OOP). Ši paradigma peržengia kodo rašymo ribas: ji apima programų kūrimą iš modulinių dalių, vadinamų objektai, kurie grupuoja ir duomenis (savybes, atributus), ir elgseną (metodus, funkcijas). Klasės apibrėžkite, kokie bus tie objektai, ir objektai Tai konkretūs atvejai, kurie gyvena ir veikia programos atmintyje.
Ir kodėl tai taip aktualu? Nes tokiu būdu organizuojant programinę įrangą galima kurti didesnes, suprantamesnes ir daug lengviau prižiūrimas programas. Viskas yra savo vietose, pokyčiams nereikia visko daryti iš naujo, o pakartotinis naudojimas tampa norma, o ne išimtimi. Javakartu su C++, Pitonas ir C# yra pagrįstas šiais principais, o visas jo dizainas ir evoliucija yra pagrįsti OOP.
„Java“ klasės: objektų kūrimo receptas
„Java“ pasaulyje klasė Tai tėra savotiškas architektūrinis vadovas ar planas. Apibrėžia, koks bus objektų rinkinys: aprašo jo atributus (ką jis turi) ir metodus (ką jis gali atlikti). Tai nėra „tikras objektas“; Tai tik aprašymas, kaip jie turėtų būti.
Įsivaizduokite sausainių fabriką: receptas ir forma yra tas pats. klasė; Kiekvienas ištrauktas sausainis yra objektai betonas. Kiekvienas jų gali turėti savo skonį, spalvą ar dydį, tačiau visi jie kilę iš to paties pradinio modelio.
Apibrėžiant klasė, jūs rašote atributus (laukus / kintamuosius), kurie apibūdina tą koncepciją, ir metodus, kurie leidžia jums dirbti su tais duomenimis. Čia jūs formuojate tai, ką vėliau naudos tūkstančiai ar milijonai skirtingų objektų.
Pradinės klasės pavyzdys Java kalboje:
viešoji klasė Asmuo { privati eilutė vardas; privatus int amžius; // Viešas konstruktorius Person(String vardas, int amžius) { this.vardas = vardas; this.amžius = amžius; } // Public void greet() metodas { System.out.println("Sveiki, aš esu " + vardas + " ir man " + amžius + " metai."); } }
Šiuo atveju, klasė Asmuo veikia kaip pelėsis. Jis turi du atributus (vardą ir amžių), konstruktorių, kuris inicijuoja objektą, ir metodą, kuris atspausdina sveikinimą. Tačiau šis „šablonas“ dar neužima atminties kaip toks ir nieko nedaro programoje; Tai tiesiog apibrėžimas.
Objektai „Java“ kalboje: faktiniai egzemplioriai ir užimta atmintis
Jei klasė yra receptas, tai objektas yra kiekvienas sausainis, ištrauktas iš orkaitės. Kuriant klasės objektą „Java“ kalboje, skiriama atmintis ir inicijuojami konkretūs jo atributai: kiekvienas objektas turi savo reikšmes, unikalias ir nepriklausomas nuo kitų objektų reikšmių, nors jie visi turi tą patį „šabloną“.
Objektų kūrimas ir naudojimas „Java“ kalboje paprastai atliekamas naudojant raktinį žodį new:
Asmuo person1 = new Asmuo("Ana", 28); Asmuo asmuo2 = new Asmuo("Juan", 34);
Kiekvieną kartą, kai jis veikia new Persona(...) Skiriama atmintis, inicijuojami duomenys ir gaunamas unikalus objektas. Jei dabar modifikuosite persona1.edad, tai visiškai nepaveiks persona2.
Objektas Jis ne tik turi reikšmes: gali vykdyti metodus, sąveikauti su kitais objektais, o jo fizinis ir loginis egzistavimas yra raktas į faktinį programos veikimą. Visi privatūs, vieši arba apsaugoti atributai, taip pat metodai, dabar yra paruošti naudoti tam konkrečiam objektui.
Pagrindiniai skirtumai tarp klasių ir objektų
Tai viena iš amžinų abejonių, ir siekiant išvengti painiavos, galima pabrėžti esminius skirtumus:
- Klasė: Tai planas, teorija, aprašymas. Jis egzistuoja tik vieną kartą. Jis dinamiškai neužima atminties.
- Objektas: Būtent konkretus atvejis, fizinis, gyvena atmintyje. Iš vienos klasės gali būti begalė objektų (jei leidžia atmintis).
- Klasė: Apibrėžia atributus ir metodus, bet nepriskiria jiems konkrečių verčių.
- Objektas: Jis turi savo reikšmes ir gali vykdyti klasėje apibrėžtus metodus.
- Klasė: Jis nėra tiesiogiai manipuliuojamas (jo „būsenos“ negalima pakeisti), jis tik tarnauja kaip pagrindas.
- Objektas: Jį galima modifikuoti, atnaujinti, naudoti ir manipuliuoti visoje programoje.
Dar vienas esminis skirtumas Tai atminties paskirstymo laikas: klasė užima atmintį tik vieną kartą (pagal savo apibrėžimą), bet kiekvienas objektas užima tam tikrą atminties sritį. Tai leidžia kiekvienam objektui turėti savarankišką gyvenimą ir savo duomenis.
Pagrindiniai klasės komponentai Java kalboje
The klases „Java“ kalboje jie gali būti tiek paprasti, tiek sudėtingi, kiek reikia, tačiau visada turi šiuos pagrindinius komponentus:
- Atributai (laukai/ypatybės): Kintamieji, apibūdinantys objekto charakteristikas (pavyzdys: pavadinimas, amžius, spalva, dydis).
- Metodai: Funkcijos, leidžiančios manipuliuoti atributais arba vykdyti veiksmus (pavyzdžiui: banguoti, pradėti, pagreitinti).
- Statybininkai: Specialūs metodai, kurie inicijuojami, kai sukuriamas objektas (egzempliorius), leidžiantys inicijuoti atributus ir paruošti objektą prieš naudojimą.
- Prieigos modifikatoriai: Žodžiai kaip viešas, privatus, saugomas kurie kontroliuoja atributų / metodų matomumą ir prieigą.
- Paveldėjimas ir polimorfizmas: Klasė gali paveldėti iš kitos (tėvinės/vaikinės) ir išplėsti arba modifikuoti savo elgesį. Tai sukuria abstrakčias klases, sąsajas ir kt.
Pavyzdžiui, jei sukursime klasę Automobilis Vaizdo žaidimo atributai gali būti modelis, maksimalus greitis, spalva... o metodai gali apimti acelerar(), frenar() o encender().
Kaip kurti ir naudoti objektus „Java“: praktiniai pavyzdžiai
Praktika yra viskas. Beveik kiekviename OOP šaltinyje „Java“ kalboje naudojami tokie pavyzdžiai kaip žmonės, automobiliai, gyvūnai ar įmonės, nes juos lengva paversti logiškomis struktūromis kode.
Paprastas pavyzdys: sukurkite asmenį ir parodykite jo informaciją
viešoji klasė Asmuo { privati eilutė vardas; privatus int amžius; public Person(String vardas, int amžius) { this.vardas = vardas; this.amžius = amžius; } public void showInformation() { System.out.println("Vardas: " + vardas); System.out.println("Amžius: " + amžius); } } public class Main { public static void main(String[] args) { Asmuo person1 = new Asmuo("Luis", 22); person1.showInformation(); } }
Konstruktorius inicijuoja objekto reikšmes, metodas leidžia rodyti informaciją ir objektas persona1 gyvena atmintyje su tais konkrečiais duomenimis.
Statinių atributų naudojimo pavyzdys
viešosios klasės skaitiklis { privatus statinis sveikųjų skaičių skaičius = 0; public Skaitliukas() { count++; } public static int getAccount() { return account; } public static void main(String[] args) { Skaitliukas c1 = new Skaitliukas(); Skaitliukas c2 = new Skaitliukas(); System.out.println("Iš viso sukurtų objektų: " + Counter.getCount()); } }
Kintamas cuenta Jį bendrina visi klasės objektai ir jis leidžia sužinoti, kiek objektų buvo sukurta iš viso. Tai iliustruoja skirtumą tarp egzemplioriaus atributų (būdingų kiekvienam objektui) ir statinių atributų (bendrinamų visiems objektams).
Atributai Java kalboje: tipai ir panaudojimas
Atributai Tai yra kiekvieno objekto duomenys arba charakteristikos. Jie patalpinami klasės viduje, bet už metodų ribų, ir gali turėti skirtingus modifikatorius:
- Egzemplioriaus atributai: Jie būdingi kiekvienam objektui, kiekvienas turi savo specifinę kopiją ir unikalią būseną.
- Statiniai atributai: Bendrinama visuose egzemplioriuose. Jei pakeisite tai iš vieno objekto, tai paveiks visus juos.
- Galutiniai atributai: Inicializavus, jie negali pakeisti vertės.
- Klasės atributai: „Java“ kalboje jie paprastai yra lygiaverčiai statiniams atributams.
Pasirinkimas tarp viešojo, privataus ar apsaugoto priklauso nuo to, ar norite kontroliuoti prieigą iš išorės (gera praktika: naudokite privatų ir „getter/setter“ metodus, kad būtų užtikrinta didesnė kontrolė ir inkapsuliacija). Jei norite gilintis į Kaip tinkinti ataskaitas „Power BI“, taip pat galite praplėsti savo žinias duomenų valdymo ir vizualizavimo srityse.
Konstruktoriai: objektų būsenos inicijavimas
„Java“ kalboje kiekvieną kartą, kai sukuriate objektą, vykdomas procesas. konstruktorius, kuris yra specialus metodas, kurio pavadinimas sutampa su klasės pavadinimu ir niekada neturi grąžinimo tipo. Jis naudojamas pradinėms atributų reikšmėms nustatyti arba paleidimo logikai vykdyti.
Yra įvairių tipų konstruktorių, kuriuos galite perkrauti priklausomai nuo savo poreikių:
- Numatytasis konstruktorius: Jis negauna parametrų. Jei neapibrėžiate, „Java“ automatiškai sukuria tuščią.
- Konstruktorius su parametrais: Gauna pradines atributų reikšmes.
- Kopijavimo konstruktorius: Leidžia sukurti naują objektą iš kito, nukopijuojant jo reikšmes.
- Privatus statybininkas: Jis dažnai naudojamas tokiuose šablonuose kaip Singleton, kad objektų nebūtų galima sukurti tiesiogiai iš išorės.
Paveldimumas, superklasės ir poklasiai Java kalboje
Viena iš galingiausių OOP ir Java koncepcijų yra Herencia: galimybė kurti naujas klases iš kitų, paveldint jų atributus ir metodus. Tai leidžia kurti logines hierarchijas ir išvengti kodo dubliavimo.
La superklasė Tai yra bazinė klasė (tėvinė klasė), iš kurios paveldi klasės. poklasius (dukterys). Poklasis gali išplėsti arba modifikuoti paveldėtą elgesį ir netgi pridėti naujų metodų ar atributų.
pavyzdys:
viešoji klasė Gyvūnas { apsaugotas String pavadinimas; public void makeSound() { System.out.println("Bendras garsas"); } } public class Šuo extends Gyvūnas { public void makeSound() { System.out.println("Au au"); } }
Objektinio programavimo privalumai ir trūkumai
La OOP (ir ypač „Java“) turi daug privalumų, kurie paaiškina, kodėl ši paradigma dominuoja profesiniame tobulėjime:
- Leidžia pakartotinai naudoti kodą: Dėl paveldėjimo ir modulinės organizacijos galite panaudoti esamą darbą ir pritaikyti jį naujiems kontekstams.
- Suskirstykite programas į modulius: Kiekviena klasė yra savarankiškas „gabalas“, todėl dideles programas lengviau valdyti.
- Palengvina techninę priežiūrą: Vienos klasės modifikavimas neturi įtakos kitoms, todėl pakeitimai yra lokalizuoti ir saugūs.
- Skatina aiškumą ir dokumentaciją: Klasės ir objektai atspindi realaus pasaulio sąvokas, padėdami suprasti probleminę sritį.
Tačiau yra ir tam tikrų trūkumų ar iššūkių:
- Didesnis atminties suvartojimas: Kuriant daug objektų, kiekvienas iš jų užima savo atmintį.
- Pradinė mokymosi kreivė: Iš pradžių gali būti painu suprasti ryšį tarp klasių, objektų, paveldėjimo, polimorfizmo ir kt.
- Galimas efektyvumo praradimas: Programos gali veikti šiek tiek lėčiau nei „plokštesniuose“ modeliuose (pvz., struktūrizuotame programavime).
Išsamūs taikomųjų klasių ir objektų pavyzdžiai Java kalboje
Dabar panagrinėkime pavyzdį, kuris apima viską, ką iki šiol išmokome, ir parodo ryšį tarp klasių, objektų, atributų, konstruktorių ir metodų.
// Apibrėžiame klasę public class Animal { private String name; privatus int amžius; public Gyvūnas(String pavadinimas) { this.pavadinimas = pavadinimas; this.amžius = 0; } public int getAge() { return amzius; } public void setAmžius(int naujasAmžius) { this.amžius = naujasAmžius; } public String getName() { grąžinti vardą; } } // Klasės naudojimas public class Example { public static void main(String[] args) { Gyvūnas myGyvūnas = new Gyvūnas("Sakalas"); manoGyvūnas.nustatytiAmžių(3); System.out.println("Vardas yra: " + getName() + " ir yra " + getAge() + " metų"); } }
Kaip atmintis ir nuorodos veikia „Java“
Kuriant objektą „Java“ kalboje, programos kintamuosiuose iš tikrųjų yra šie: nuorodos į to objekto užimamą atminties vietą. Todėl, jei objektas priskiriamas kitam kintamajam, abu nurodo tą patį egzempliorių.
pavyzdys:
Asmuo asmuoA = naujas asmuo ("Mario", 45); Asmuo asmuoB = asmuoA; personB.setAmžius(46); System.out.println(asmuoA.getAmžius()); // Spausdinti 46
Taip atsitinka todėl, kad abu personaA kaip personaB nukreipti į tą patį objektą atmintyje. Norint sukurti atskirą kopiją, rekomenduojama naudoti .
Geriausia praktika: inkapsuliacija ir prieigos metodai
Viena iš svarbiausių rekomendacijų „Java“ kalboje yra apsaugoti atributus juos gaminant privatusir leisti prieigą arba pakeitimus tik naudojant viešus metodus, vadinamus getteriai ir setteriai. Tai apsaugo objekto vidinę būseną ir leidžia atlikti papildomus valdiklius arba patvirtinimus jei reikia.
Pavyzdžiui:
viešoji klasė Asmuo { privati eilutė vardas; privatus int amžius; public String getName() { grąžinti vardą; } public void setName(String pavadinimas) { this.pavadinimas = pavadinimas; } }
Aistringas rašytojas apie baitų pasaulį ir technologijas apskritai. Man patinka dalytis savo žiniomis rašydamas, būtent tai ir darysiu šiame tinklaraštyje, parodysiu jums įdomiausius dalykus apie programėles, programinę įrangą, techninę įrangą, technologijų tendencijas ir kt. Mano tikslas – padėti jums paprastai ir smagiai naršyti skaitmeniniame pasaulyje.
