Java valodā klases un objekti ir objektorientētās programmēšanas (OOP) pamatjēdzieni, kas tiek izmantoti, lai attēlotu reālās pasaules jēdzienus un entītijas. Klase attēlo objektu grupu ar līdzīgām īpašībām un uzvedību. Piemēram, dzīvnieka tips Suns ir klase, kamēr nosaukts konkrēts suns Tomijs ir objekts Suns klasē.
Šajā rakstā mēs apspriedīsim Java objektus un klases un to, kā tos ieviest mūsu programmā.
Java klases
Java klase ir objektu kopa, kurai ir kopīgas īpašības/uzvedība un kopīgas īpašības/atribūti. Tas ir lietotāja definēts projekts vai prototips, no kura tiek izveidoti objekti. Piemēram, Students ir klase, bet konkrēts students vārdā Ravi ir objekts.
Java klašu īpašības
- Klase nav reālās pasaules vienība. Tā ir tikai veidne vai projekts vai prototips, no kura tiek izveidoti objekti.
- Klase neaizņem atmiņu.
- Klase ir dažādu datu tipu mainīgo lielumu grupa un metožu grupa.
- Java klasē var būt:
- Datu dalībnieks
- Metode
- Konstruktors
- Ligzdota klase
- Interfeiss
Klases deklarācija Java valodā
access_modifier class < class_name>{ datu dalībnieks; metode; konstruktors; ligzdota klase; saskarne; }> Java klases piemērs
Java
// Java Program for class example> class> Student {> >// data member (also instance variable)> >int> id;> >// data member (also instance variable)> >String name;> >public> static> void> main(String args[])> >{> >// creating an object of> >// Student> >Student s1 =>new> Student();> >System.out.println(s1.id);> >System.out.println(s1.name);> >}> }> |
>
>
Java
// Java program to Illustrate Creation of Object> // Using new Instance> // Main class> class> GFG {> >// Declaring and initializing string> >String name =>'GeeksForGeeks'>;> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Try block to check for exceptions> >try> {> >Class cls = Class.forName(>'GFG'>);> >// Creating object of main class> >// using instance method> >GFG obj = (GFG)cls.newInstance();> >// Print and display> >System.out.println(obj.name);> >}> >catch> (ClassNotFoundException e) {> >e.printStackTrace();> >}> >catch> (InstantiationException e) {> >e.printStackTrace();> >}> >catch> (IllegalAccessException e) {> >e.printStackTrace();> >}> >}> }> |
>
>
polimorfisms
Java
// Java program to Illustrate Creation of Object> // Using clone() method> // Main class> // Implementing Cloneable interface> class> GFG>implements> Cloneable {> >// Method 1> >@Override> >protected> Object clone()> >throws> CloneNotSupportedException> >{> >// Super() keyword refers to parent class> >return> super>.clone();> >}> >String name =>'GeeksForGeeks'>;> >// Method 2> >// main driver method> >public> static> void> main(String[] args)> >{> >GFG obj1 =>new> GFG();> >// Try block to check for exceptions> >try> {> >GFG obj2 = (GFG)obj1.clone();> >System.out.println(obj2.name);> >}> >catch> (CloneNotSupportedException e) {> >e.printStackTrace();> >}> >}> }> |
>
>
1. izvads
0 null>
2. izvads
GeeksForGeeks>
3. izvads
GeeksForGeeks>
Java klašu sastāvdaļas
Parasti klašu deklarācijās var iekļaut šos komponentus šādā secībā:
- Modifikatori : klase var būt publiska vai tai var būt noklusējuma piekļuve (sk šis sīkākai informācijai).
- Klases atslēgvārds: klases atslēgvārds tiek izmantots, lai izveidotu klasi.
- Klases nosaukums: Nosaukumam jāsākas ar sākuma burtu (ar lielo burtu pēc vienošanās).
- Superklase (ja tāda ir): Klases vecākā (virsklases) nosaukums, ja tāds ir, pirms tam ir atslēgvārds extends. Klase var paplašināt (apakšklasi) tikai vienu no vecākiem.
- Saskarnes (ja tādas ir): Ar komatiem atdalīts klases ieviesto saskarņu saraksts, ja tādas ir, pirms kurām ir atslēgvārds implements. Klase var ieviest vairāk nekā vienu saskarni.
- Pamatteksts: Klases pamattekstu ieskauj lencēm, { }.
Konstruktori tiek izmantoti jaunu objektu inicializēšanai. Lauki ir mainīgie, kas nodrošina klases un tās objektu stāvokli, un metodes tiek izmantotas, lai ieviestu klases un tās objektu uzvedību.
Ir dažāda veida klases, kas tiek izmantotas reāllaika lietojumprogrammās, piemēram, ligzdotas klases , anonīmās nodarbības , un lambda izteiksmes .
Java objekti
Java objekts ir objektorientētās programmēšanas pamatvienība un attēlo reālās dzīves entītijas. Objekti ir klases gadījumi, kas izveidoti, lai izmantotu klases atribūtus un metodes. Tipiska Java programma rada daudzus objektus, kas, kā jūs zināt, mijiedarbojas, izsaucot metodes. Objekts sastāv no:
- Valsts : to attēlo objekta atribūti. Tas atspoguļo arī objekta īpašības.
- Uzvedība : to attēlo objekta metodes. Tas arī atspoguļo objekta reakciju uz citiem objektiem.
- Identitāte : Tas piešķir objektam unikālu nosaukumu un ļauj vienam objektam mijiedarboties ar citiem objektiem.
Priekšmeta piemērs: suns
Java objekti
Objekti atbilst lietām, kas atrodamas reālajā pasaulē. Piemēram, grafikas programmā var būt tādi objekti kā aplis, kvadrāts un izvēlne. Tiešsaistes iepirkšanās sistēmā var būt tādi objekti kā iepirkumu grozs, klients un produkts.
Piezīme: Kad mēs izveidojam objektu, kas nav primitīvs datu tips, tas vienmēr tiek piešķirts kaudzes atmiņā.
Objektu deklarēšana (saukta arī par klases instantiāciju)
Kad tiek izveidots klases objekts, tiek uzskatīts, ka klase ir momentāni . Visām instancēm ir kopīgi klases atribūti un uzvedība. Bet šo atribūtu vērtības, t.i., stāvoklis ir unikāls katram objektam. Vienai klasei var būt neierobežots skaits gadījumu.
Piemērs:
Java objektu deklarācija
Kā mēs deklarējam mainīgos, piemēram, (tipa nosaukums;). Tas paziņo kompilatoram, ka mēs izmantosim nosaukumu, lai atsauktos uz datiem, kuru tips ir tips. Izmantojot primitīvu mainīgo, šī deklarācija arī rezervē pareizo atmiņas apjomu mainīgajam. Tātad atsauces mainīgajiem tipam ir jābūt tikai konkrētam klases nosaukumam. Kopumā mēs nevar izveidot abstraktas klases vai interfeisa objektus.
Dog tuffy;>
Ja mēs šādi deklarējam atsauces mainīgo (tuffy), tā vērtība būs nenoteikta (nulle), līdz objekts tiks faktiski izveidots un tam piešķirts. Vienkārši deklarējot atsauces mainīgo, objekts netiek izveidots.
Java objekta inicializācija
Jaunais operators veido klasi, piešķirot atmiņu jaunam objektam un atgriežot atsauci uz šo atmiņu. Jaunais operators izsauc arī klases konstruktoru.
Piemērs:
Java
// Class Declaration> public> class> Dog {> >// Instance Variables> >String name;> >String breed;> >int> age;> >String color;> >// Constructor Declaration of Class> >public> Dog(String name, String breed,>int> age,> >String color)> >{> >this>.name = name;> >this>.breed = breed;> >this>.age = age;> >this>.color = color;> >}> >// method 1> >public> String getName() {>return> name; }> >// method 2> >public> String getBreed() {>return> breed; }> >// method 3> >public> int> getAge() {>return> age; }> >// method 4> >public> String getColor() {>return> color; }> >@Override> public> String toString()> >{> >return> (>'Hi my name is '> +>this>.getName()> >+>'.
My breed,age and color are '> >+>this>.getBreed() +>','> +>this>.getAge()> >+>','> +>this>.getColor());> >}> >public> static> void> main(String[] args)> >{> >Dog tuffy> >=>new> Dog(>'tuffy'>,>'papillon'>,>5>,>'white'>);> >System.out.println(tuffy.toString());> >}> }> |
>
e-r modeļa diagramma
>Izvade
Hi my name is tuffy. My breed,age and color are papillon,5,white>
Inicializējiet, izmantojot metodi/funkciju:
Java
kārtot masīvu sarakstu
public> class> GFG {> >// sw=software> >static> String sw_name;> >static> float> sw_price;> >static> void> set(String n,>float> p)> >{> >sw_name = n;> >sw_price = p;> >}> >static> void> get()> >{> >System.out.println(>'Software name is: '> + sw_name);> >System.out.println(>'Software price is: '> >+ sw_price);> >}> >public> static> void> main(String args[])> >{> >GFG.set(>'Visual studio'>,>0>.0f);> >GFG.get();> >}> }> |
>
>Izvade
Software name is: Visual studio Software price is: 0.0>
Šajā klasē ir viens konstruktors. Mēs varam atpazīt konstruktoru, jo tā deklarācijā tiek izmantots tāds pats nosaukums kā klasei un tam nav atgriešanas veida. Java kompilators atšķir konstruktorus, pamatojoties uz argumentu skaitu un veidu. Konstruktors Suns klasē ir četri argumenti. Tālāk sniegtajā paziņojumā šiem argumentiem ir norādītas vērtības tuffy, papillon,5 un white:
Dog tuffy = new Dog('tuffy','papillon',5, 'white');> Šī paziņojuma izpildes rezultātu var ilustrēt šādi:
Java objektu atmiņas piešķiršana
Piezīme: Visām klasēm ir vismaz viens konstruktors. Ja klase nav skaidri deklarējusi nevienu, Java kompilators automātiski nodrošina bezargumentu konstruktoru, ko sauc arī par noklusējuma konstruktoru. Šis noklusējuma konstruktors izsauc klases vecāku konstruktoru bez argumentiem (jo tajā ir tikai viens priekšraksts, piemēram, super();) vai Objekts klases konstruktors, ja klasei nav cita vecāka (jo Object klase ir visu klašu vecākais vai nu tieši, vai netieši).
Veidi, kā izveidot klases objektu
Ir četri veidi, kā izveidot objektus Java. Stingri sakot, ir tikai viens veids (izmantojot a jauns atslēgvārds), bet pārējie iekšēji izmanto a jauns atslēgvārds.
1. Jauna atslēgvārda izmantošana
Tas ir visizplatītākais un vispārīgākais veids, kā izveidot objektu Java.
Piemērs:
// creating object of class Test Test t = new Test();>
2. Izmantojot metodi Class.forName(String className).
Java.lang pakotnē ir iepriekš definēta klase ar nosaukumu Class. Metode forName(String className) atgriež klases objektu, kas saistīts ar klasi ar doto virknes nosaukumu. Mums ir jāpiešķir klasei pilnībā kvalificēts nosaukums. Izsaucot jauno Instance() metodi šajā Class objektā, tiek atgriezta jauna klases instance ar doto virknes nosaukumu.
// creating object of public class Test // consider class Test present in com.p1 package Test obj = (Test)Class.forName('com.p1.Test').newInstance();> 3. Izmantojot clone() metodi
Metode clone() ir pieejama klasē Object. Tas izveido un atgriež objekta kopiju.
// creating object of class Test Test t1 = new Test(); // creating clone of above object Test t2 = (Test)t1.clone();>
4. Deserializācija
Deserializācija ir paņēmiens objekta nolasīšanai no saglabātā stāvokļa failā. Atsaukties uz Serializācija/de-serializācija Java
FileInputStream file = new FileInputStream(filename); ObjectInputStream in = new ObjectInputStream(file); Object obj = in.readObject();>
Vairāku objektu izveide tikai pēc viena veida (laba prakse)
Reāllaikā mums ir nepieciešami dažādi klases objekti dažādās metodēs. Vairāku atsauču izveide to glabāšanai nav laba prakse, tāpēc mēs deklarējam statisku atsauces mainīgo un izmantojam to, kad vien tas ir nepieciešams. Šajā gadījumā atmiņas zudums ir mazāks. Objektus, uz kuriem vairs nav atsauces, iznīcinās Atkritumu savācējs Java.
Piemērs:
Test test = new Test(); test = new Test();>
Mantojuma sistēmā mēs izmantojam vecāku klases atsauces mainīgo, lai saglabātu apakšklases objektu. Šajā gadījumā mēs varam pārslēgties uz dažādiem apakšklases objektiem, izmantojot vienu un to pašu atsauces mainīgo.
Piemērs:
class Animal {} class Dog extends Animal {} class Cat extends Animal {} public class Test { // using Dog object Animal obj = new Dog(); // using Cat object obj = new Cat(); }> Anonīmi objekti Java valodā
Anonīmi objekti ir objekti, kas ir instantiēti, bet netiek saglabāti atsauces mainīgajā.
- Tos izmanto tūlītējiem metodes izsaukumiem.
- Pēc metodes izsaukšanas tie tiks iznīcināti.
- Tos plaši izmanto dažādās bibliotēkās. Piemēram, AWT bibliotēkās tos izmanto, lai veiktu kādu darbību notikuma tveršanā (piemēram, taustiņu nospiešana).
- Tālāk sniegtajā piemērā, kad tiek nospiesta atslēgas poga (uz kuru norāda btn), mēs vienkārši izveidojam anonīmu EventHandler klases objektu, lai izsauktu roktura metodi.
btn.setOnAction(new EventHandler() { public void handle(ActionEvent event) { System.out.println('Hello World!'); } });> Atšķirība starp Java klasi un objektiem
Atšķirības starp klasi un objektu Java ir šādas:
| Klase | Objekts |
|---|---|
| Klase ir objekta projekts. To izmanto, lai izveidotu objektus. | Objekts ir klases gadījums. |
| Atmiņa netiek piešķirta, kad tiek deklarēta klase. | Atmiņa tiek piešķirta, tiklīdz objekts ir izveidots. |
| Klase ir līdzīgu objektu grupa. | Objekts ir reālās pasaules vienība, piemēram, grāmata, automašīna utt. |
| Klase ir loģiska vienība. | Objekts ir fiziska vienība. |
| Klasi var deklarēt tikai vienu reizi. | Objektus var izveidot vairākas reizes atbilstoši prasībām. |
| Klases piemērs var būt automašīna. | Klases auto objekti var būt BMW, Mercedes, Ferrari u.c. |