logo

Classes i objectes en Java

A Java, les classes i els objectes són conceptes bàsics de la Programació Orientada a Objectes (OOP) que s'utilitzen per representar conceptes i entitats del món real. La classe representa un grup d'objectes amb propietats i comportament similars. Per exemple, el tipus animal gos és una classe mentre es diu un gos en particular Tommy és un objecte de la gos classe.

En aquest article, parlarem dels objectes i classes Java i de com implementar-los al nostre programa.

Classes de Java

Una classe a Java és un conjunt d'objectes que comparteixen característiques/comportament i propietats/atributs comuns. És un plànol o prototip definit per l'usuari a partir del qual es creen objectes. Per exemple, l'alumne és una classe mentre que un alumne determinat anomenat Ravi és un objecte.



Propietats de les classes Java

  1. La classe no és una entitat del món real. És només una plantilla o plànol o prototip a partir del qual es creen objectes.
  2. La classe no ocupa memòria.
  3. La classe és un grup de variables de diferents tipus de dades i un grup de mètodes.
  4. Una classe en Java pot contenir:
    • Membre de dades
    • Mètode
    • Constructor
    • Classe anidada
    • Interfície

Declaració de classe en Java

  access_modifier     class   <  class_name>{ membre de dades; mètode; constructor; classe imbricada; interfície; }>>> 

Exemple de classe Java

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();> >}> >}> }>

>

>

hivern triple

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();> >}> >}> }>

>

>

bucle per al c

Sortida 1

0 null>

Sortida 2

GeeksForGeeks>

Sortida 3

GeeksForGeeks>

Components de les classes Java

En general, les declaracions de classe poden incloure aquests components, per ordre:

  1. Modificadors : Una classe pot ser pública o tenir accés per defecte (Consulteu això per als detalls).
  2. Clase clau de classe: La paraula clau class s'utilitza per crear una classe.
  3. Nom de la classe: El nom ha de començar amb una lletra inicial (en majúscula per convenció).
  4. Superclasse (si n'hi ha): El nom del pare de la classe (superclasse), si n'hi ha, precedit de la paraula clau extends. Una classe només pot ampliar (subclasse) un pare.
  5. Interfícies (si n'hi ha): Una llista separada per comes d'interfícies implementades per la classe, si n'hi ha, precedida de la paraula clau implements. Una classe pot implementar més d'una interfície.
  6. Cos: El cos de la classe està envoltat de claus, { }.

Els constructors s'utilitzen per inicialitzar nous objectes. Els camps són variables que proporcionen l'estat de la classe i els seus objectes, i s'utilitzen mètodes per implementar el comportament de la classe i els seus objectes.
Hi ha diversos tipus de classes que s'utilitzen en aplicacions en temps real com ara classes imbricades , classes anònimes , i expressions lambda .

Objectes Java

Un objecte en Java és una unitat bàsica de la programació orientada a objectes i representa entitats de la vida real. Els objectes són les instàncies d'una classe que es creen per utilitzar els atributs i mètodes d'una classe. Un programa típic de Java crea molts objectes que, com sabeu, interactuen invocant mètodes. Un objecte està format per:

  1. Estat : Es representa mitjançant atributs d'un objecte. També reflecteix les propietats d'un objecte.
  2. Comportament : Es representa amb els mètodes d'un objecte. També reflecteix la resposta d'un objecte amb altres objectes.
  3. Identitat : Dóna un nom únic a un objecte i permet que un objecte interactuï amb altres objectes.

Exemple d'objecte: gos

Objectes Java

Els objectes corresponen a coses que es troben al món real. Per exemple, un programa de gràfics pot tenir objectes com ara cercle, quadrat i menú. Un sistema de compres en línia pot tenir objectes com ara carretó de la compra, client i producte.

Nota: Quan creem un objecte que és un tipus de dades no primitiu, sempre s'assigna a la memòria de l'heap.

Declaració d'objectes (també anomenat instància d'una classe)

Quan es crea un objecte d'una classe, es diu que la classe ho és instanciat . Totes les instàncies comparteixen els atributs i el comportament de la classe. Però els valors d'aquests atributs, és a dir, l'estat, són únics per a cada objecte. Una sola classe pot tenir qualsevol nombre d'instàncies.

Exemple:

Declaració d'objectes Java

A mesura que declarem variables com (nom del tipus;). Això notifica al compilador que utilitzarem el nom per fer referència a les dades el tipus de les quals és tipus. Amb una variable primitiva, aquesta declaració també reserva la quantitat adequada de memòria per a la variable. Per tant, per a les variables de referència, el tipus ha de ser estrictament un nom de classe concret. En general, nosaltres no pot crear objectes d'una classe abstracta o una interfície.

Dog tuffy;>

Si declarem una variable de referència (tuffy) com aquesta, el seu valor serà indeterminat (nul) fins que realment es creï i se li assigni un objecte. Simplement declarar una variable de referència no crea un objecte.

Inicialització d'un objecte Java

El nou operador crea una instància d'una classe assignant memòria per a un objecte nou i retornant una referència a aquesta memòria. El nou operador també invoca el constructor de classes.

Exemple:

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());> >}> }>

>

>

Sortida

Hi my name is tuffy. My breed,age and color are papillon,5,white>

Inicialitzar utilitzant el mètode/funció:

Java




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();> >}> }>

>

>

estampat d'estrelles
Sortida

Software name is: Visual studio Software price is: 0.0>

Aquesta classe conté un únic constructor. Podem reconèixer un constructor perquè la seva declaració utilitza el mateix nom que la classe i no té cap tipus de retorn. El compilador Java diferencia els constructors segons el nombre i el tipus d'arguments. El constructor en el gos la classe pren quatre arguments. La declaració següent proporciona tuffy, papillon,5 i white com a valors per a aquests arguments:

Dog tuffy = new Dog('tuffy','papillon',5, 'white');>

El resultat d'executar aquesta instrucció es pot il·lustrar com:

Assignació de memòria d'objectes Java

Nota: Totes les classes tenen com a mínim un constructor. Si una classe no en declara cap explícitament, el compilador Java proporciona automàticament un constructor sense arguments, també anomenat constructor per defecte. Aquest constructor per defecte crida al constructor sense argument de la classe pare (ja que només conté una sentència, és a dir, super();) o el Objecte constructor de classes si la classe no té cap altre pare (ja que la classe Object és el pare de totes les classes directament o indirectament).

Maneres de crear un objecte d'una classe

Hi ha quatre maneres de crear objectes a Java. En sentit estricte, només hi ha una manera (utilitzant a nou paraula clau), i la resta utilitzen internament a nou paraula clau.

1. Utilitzant la paraula clau nova

És la forma més comuna i general de crear un objecte en Java.

Exemple:

// creating object of class Test Test t = new Test();>

2. Utilitzant el mètode Class.forName(String className).

Hi ha una classe predefinida al paquet java.lang amb el nom Classe. El mètode forName(String className) retorna l'objecte Class associat a la classe amb el nom de cadena donat. Hem de donar un nom totalment qualificat per a una classe. En cridar el nou mètode Instance() en aquest objecte Class retorna una nova instància de la classe amb el nom de cadena donat.

// creating object of public class Test // consider class Test present in   com.p1   package Test obj = (Test)Class.forName('com.p1.Test').newInstance();>

3. Utilitzant el mètode clone().

El mètode clone() està present a la classe Object. Crea i retorna una còpia de l'objecte.

// creating object of class Test Test t1 = new Test(); // creating clone of above object Test t2 = (Test)t1.clone();>

4. Deserialització

La deserialització és una tècnica de lectura d'un objecte des de l'estat desat en un fitxer. Consulteu Serialització/Des-serialització en Java

FileInputStream file = new FileInputStream(filename); ObjectInputStream in = new ObjectInputStream(file); Object obj = in.readObject();>

Creació de diversos objectes per un sol tipus (una bona pràctica)

En temps real, necessitem diferents objectes d'una classe amb diferents mètodes. Crear una sèrie de referències per emmagatzemar-les no és una bona pràctica i, per tant, declarem una variable de referència estàtica i la fem servir sempre que sigui necessari. En aquest cas, el malbaratament de memòria és menor. Els objectes als quals ja no es fa referència seran destruïts pel Abocador de Java.

Exemple:

Test test = new Test(); test = new Test();>

En el sistema d'herència, fem servir una variable de referència de classe pare per emmagatzemar un objecte de subclasse. En aquest cas, podem canviar a diferents objectes de subclasse utilitzant la mateixa variable referenciada.

Exemple:

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(); }>

Objectes anònims a Java

Els objectes anònims són objectes que s'instanciencien però no s'emmagatzemen en una variable de referència.

  • S'utilitzen per a trucades de mètodes immediats.
  • Es destruiran després de la trucada al mètode.
  • Són àmpliament utilitzats en diferents biblioteques. Per exemple, a les biblioteques AWT, s'utilitzen per dur a terme alguna acció en la captura d'un esdeveniment (per exemple, una tecla prement).
  • A l'exemple següent, quan es prem un botó de tecla (a què fa referència el btn), simplement estem creant un objecte anònim de la classe EventHandler per trucar al mètode handle.
btn.setOnAction(new EventHandler() { public void handle(ActionEvent event) { System.out.println('Hello World!'); } });>

Diferència entre classe Java i objectes

Les diferències entre classe i objecte a Java són les següents:

Classe

Objecte

La classe és el plànol d'un objecte. S'utilitza per crear objectes. Un objecte és una instància de la classe.
No s'assigna cap memòria quan es declara una classe. La memòria s'assigna tan bon punt es crea un objecte.
Una classe és un grup d'objectes semblants. Un objecte és una entitat del món real com un llibre, un cotxe, etc.
La classe és una entitat lògica. Un objecte és una entitat física.
Una classe només es pot declarar una vegada. Els objectes es poden crear moltes vegades segons els requisits.
Un exemple de classe pot ser un cotxe. Els objectes del cotxe de classe poden ser BMW, Mercedes, Ferrari, etc.