logo

Clases y objetos en Java

En Java, las clases y los objetos son conceptos básicos de la programación orientada a objetos (OOP) que se utilizan para representar conceptos y entidades del mundo real. La clase representa un grupo de objetos que tienen propiedades y comportamiento similares. Por ejemplo, el tipo de animal. Perro es una clase mientras que un perro en particular llamado tommy es un objeto de la Perro clase.

En este artículo, discutiremos los objetos y clases de Java y cómo implementarlos en nuestro programa.

clases de java

Una clase en Java es un conjunto de objetos que comparten características/comportamiento y propiedades/atributos comunes. Es un modelo o prototipo definido por el usuario a partir del cual se crean los objetos. Por ejemplo, Estudiante es una clase, mientras que un estudiante en particular llamado Ravi es un objeto.



Propiedades de las clases Java

  1. La clase no es una entidad del mundo real. Es simplemente una plantilla, plano o prototipo a partir del cual se crean los objetos.
  2. La clase no ocupa memoria.
  3. Una clase es un grupo de variables de diferentes tipos de datos y un grupo de métodos.
  4. Una clase en Java puede contener:
    • Miembro de datos
    • Método
    • Constructor
    • Clase anidada
    • Interfaz

Declaración de clase en Java

  access_modifier     class   <  class_name>{miembro de datos; método; constructor; clase anidada; interfaz; }>

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

>

>

codificación java si otra declaración

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

>

>

Salida 1

0 null>

Salida 2

GeeksForGeeks>

Salida 3

GeeksForGeeks>

Componentes de las clases de Java

En general, las declaraciones de clases pueden incluir estos componentes, en orden:

  1. Modificadores : Una clase puede ser pública o tener acceso predeterminado (consulte este para detalles).
  2. Palabra clave de clase: La palabra clave class se utiliza para crear una clase.
  3. Nombre de la clase: El nombre debe comenzar con una letra inicial (en mayúscula por convención).
  4. Superclase (si corresponde): El nombre del padre de la clase (superclase), si lo hay, precedido por la palabra clave extend. Una clase solo puede extender (subclase) a un padre.
  5. Interfaces (si las hay): Una lista separada por comas de interfaces implementadas por la clase, si corresponde, precedida por la palabra clave implements. Una clase puede implementar más de una interfaz.
  6. Cuerpo: El cuerpo de la clase está rodeado por llaves, { }.

Los constructores se utilizan para inicializar nuevos objetos. Los campos son variables que proporcionan el estado de la clase y sus objetos, y los métodos se utilizan para implementar el comportamiento de la clase y sus objetos.
Hay varios tipos de clases que se utilizan en aplicaciones en tiempo real, como clases anidadas , clases anónimas , y expresiones lambda .

juegos de mensajes en android

Objetos Java

Un objeto en Java es una unidad básica de programación orientada a objetos y representa entidades de la vida real. Los objetos son instancias de una clase que se crean para utilizar los atributos y métodos de una clase. Un programa Java típico crea muchos objetos que, como usted sabe, interactúan invocando métodos. Un objeto consta de:

  1. Estado : Está representado por los atributos de un objeto. También refleja las propiedades de un objeto.
  2. Comportamiento : Está representado por los métodos de un objeto. También refleja la respuesta de un objeto con otros objetos.
  3. Identidad : Da un nombre único a un objeto y permite que un objeto interactúe con otros objetos.

Ejemplo de un objeto: perro

Objetos Java

Los objetos corresponden a cosas que se encuentran en el mundo real. Por ejemplo, un programa de gráficos puede tener objetos como círculo, cuadrado y menú. Un sistema de compras en línea puede tener objetos como carrito de compras, cliente y producto.

Nota: Cuando creamos un objeto que es un tipo de datos no primitivo, siempre se asigna en la memoria del montón.

Declarar objetos (también llamado crear instancias de una clase)

Cuando se crea un objeto de una clase, se dice que la clase es instanciado . Todas las instancias comparten los atributos y el comportamiento de la clase. Pero los valores de esos atributos, es decir, el estado, son únicos para cada objeto. Una sola clase puede tener cualquier número de instancias.

Ejemplo:

Declaración de objeto Java

Mientras declaramos variables como (tipo nombre;). Esto notifica al compilador que usaremos el nombre para referirnos a datos cuyo tipo es tipo. Con una variable primitiva, esta declaración también reserva la cantidad adecuada de memoria para la variable. Entonces, para las variables de referencia, el tipo debe ser estrictamente un nombre de clase concreto. En general, nosotros no poder crear objetos de una clase abstracta o una interfaz.

Dog tuffy;>

Si declaramos una variable de referencia (tuffy) como esta, su valor será indeterminado (nulo) hasta que se cree y se le asigne un objeto. La simple declaración de una variable de referencia no crea un objeto.

Inicializando un objeto Java

El nuevo operador crea una instancia de una clase asignando memoria para un nuevo objeto y devolviendo una referencia a esa memoria. El nuevo operador también invoca al constructor de clases.

Ejemplo:

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

>

>

Producción

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

Inicializar usando método/función:

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

>

>

Producción

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

Esta clase contiene un único constructor. Podemos reconocer un constructor porque su declaración usa el mismo nombre que la clase y no tiene tipo de retorno. El compilador de Java diferencia los constructores según el número y el tipo de argumentos. El constructor en el Perro La clase toma cuatro argumentos. La siguiente declaración proporciona tuffy, papillon5 y white como valores para esos argumentos:

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

El resultado de ejecutar esta declaración se puede ilustrar como:

Asignación de memoria de objetos Java

Nota: Todas las clases tienen al menos uno constructor. Si una clase no declara explícitamente ninguno, el compilador de Java proporciona automáticamente un constructor sin argumentos, también llamado constructor predeterminado. Este constructor predeterminado llama al constructor sin argumentos de la clase padre (ya que contiene solo una declaración, es decir, super();), o el Objeto constructor de clase si la clase no tiene otro padre (ya que la clase Objeto es el padre de todas las clases, ya sea directa o indirectamente).

patrones de programación java

Formas de crear un objeto de una clase

Hay cuatro formas de crear objetos en Java. Estrictamente hablando, sólo hay una manera (usando un nuevo palabra clave), y el resto utiliza internamente una nuevo palabra clave.

1. Usando una nueva palabra clave

Es la forma más común y general de crear un objeto en Java.

Ejemplo:

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

2. Usando el método Class.forName (String className)

Hay una clase predefinida en el paquete java.lang con el nombre Clase. El método forName(String className) devuelve el objeto Class asociado con la clase con el nombre de cadena dado. Tenemos que dar un nombre completo para una clase. Al llamar al nuevo método Instance() en este objeto Class, se devuelve una nueva instancia de la clase con el nombre de cadena dado.

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

3. Usando el método clonar()

El método clone() está presente en la clase Objeto. Crea y devuelve una copia del objeto.

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

4. Deserialización

La deserialización es una técnica para leer un objeto desde el estado guardado en un archivo. Referirse a Serialización/desserialización en Java

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

Crear múltiples objetos de un solo tipo (una buena práctica)

En tiempo real, necesitamos diferentes objetos de una clase en diferentes métodos. Crear una cantidad de referencias para almacenarlas no es una buena práctica y, por lo tanto, declaramos una variable de referencia estática y la usamos cuando sea necesario. En este caso, el desperdicio de memoria es menor. Los objetos a los que ya no se hace referencia serán destruidos por el Recolector de basura de Java.

Ejemplo:

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

En el sistema de herencia, utilizamos una variable de referencia de clase principal para almacenar un objeto de subclase. En este caso, podemos cambiar a diferentes objetos de subclase usando la misma variable referenciada.

Ejemplo:

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

Objetos anónimos en Java

Los objetos anónimos son objetos de los que se crean instancias pero no se almacenan en una variable de referencia.

  • Se utilizan para llamadas a métodos inmediatos.
  • Serán destruidos después de llamar al método.
  • Son ampliamente utilizados en diferentes bibliotecas. Por ejemplo, en las bibliotecas AWT, se utilizan para realizar alguna acción al capturar un evento (por ejemplo, presionar una tecla).
  • En el siguiente ejemplo, cuando se presiona un botón de tecla (al que se refiere el btn), simplemente estamos creando un objeto anónimo de la clase EventHandler para simplemente llamar al método de manejo.
btn.setOnAction(new EventHandler() { public void handle(ActionEvent event) { System.out.println('Hello World!'); } });>

Diferencia entre clase Java y objetos

Las diferencias entre clase y objeto en Java son las siguientes:

Clase

Objeto

La clase es el modelo de un objeto. Se utiliza para crear objetos. Un objeto es una instancia de la clase.
No se asigna memoria cuando se declara una clase. La memoria se asigna tan pronto como se crea un objeto.
Una clase es un grupo de objetos similares. Un objeto es una entidad del mundo real como un libro, un automóvil, etc.
La clase es una entidad lógica. Un objeto es una entidad física.
Una clase sólo se puede declarar una vez. Los objetos se pueden crear muchas veces según los requisitos.
Un ejemplo de clase puede ser un coche. Los objetos de la clase de coche pueden ser BMW, Mercedes, Ferrari, etc.