Ir al contenido principal

Java Tip 7: Constructores

En ésta ocasión hablaremos de constructores. Los constructores son los bloques de código que comparten el mismo nombre de la clase y cuya función es crear objetos de una clase e iniciar sus atributos. 

Reglas a respetar:
  • Un constructor siempre debe tener el mismo nombre que la clase.
  • Un constructor no tiene un tipo de retorno por lo cual no devuelve algún valor. Un método puede o no tener un tipo de valor de retorno.
  • Un constructor es llamado al crearse una instancia de un objeto, y esto solo se realiza una única vez, a diferencia de los métodos que pueden ser llamados en múltiples ocasiones.
  • Los constructores nunca son heredados, ya que no son considerados como miembros de clase. Esto es una diferencia importante con respecto a los métodos ya que estos si podrían ser heredados.
  • Cuando heredamos de una clase base, si no se declara un constructor, java automáticamente llama al constructor por defecto de la clase que heredamos.
Tipos de modificadores de acceso en un constructor.

1. private: Significa que únicamente puede ser accesible desde la clase que lo define.

Ejemplo.

package com.codemonkey.pack1;

import static java.lang.System.out;

public class Punto{
 private String x;
 private String y;

 //private: accesible solo desde la misma clase
 private Punto(){
  out.println("Objeto Punto creado e inicializado");
 }

   //...
}

Si el programador quiere crear una instancia de la clase Punto no podría.

package com.codemonkey.test;

//importamos la clase Punto
import com.codemonkey.pack1.Punto;

/*Esto no puede compilar
  el constructor Punto() es private
  y por lo tanto sólo accesible desde 
  la misma clase
*/
Punto punto = new Punto();

2. default (ninguno):  Únicamente las clases de su mismo paquete pueden acceder a el.

Ejemplo.

package com.codemonkey.pack1;

import static java.lang.System.out;

public class Defecto{
 
 /*default: solo clases del mismo paquete pueden acceder
 al constructor*/
 Defecto(){
  out.println("No podras ver esto si no eres clase del mismo paquete");
 }
}

Si el programador quiere crear una instancia de la clase Defecto desde una clase diferente del paquete en el que se encuentra ésta clase no podrá hacerlo.


package com.codemonkey.test;

import com.codemonkey.pack1.Defecto

//...

/*Esto no compilará: Defecto es default y por los tanto 
sólo accesible a clases del mismo paquete*/
Defecto defecto = new Defecto();

3. protected: Sólo accesible si la clase donde se pretende crear la instancia pertenece a la misma clase o si es una subclase.

Ejemplo.

package com.codemonkey.pack1;

import static java.lang.System.out;

public class Punto{
 private String x;
 private String y;

 /*protected: accesible desde otra clase si pertenece al mismo paquete 
o es una subclase*/
 protected Punto(String x, String y){
  this();
  this.x=x;
  this.y=y;
 }
//...
}

Lo que significa que si hacemos algo como esto no podrá compilarse el código:

package com.codemonkey;

/**
*  Main.java
*/

import com.codemonkey.pack1.Punto;

//...

/*Esto no compilara: Punto(String x, String y) es protected.
La clase Main no pertenece al paquete com.codemonkey.pack1 
 donde esta la clase Punto*/

Punto p = new Punto("34.6","44.2");

La clase Main.java debería estar en el paquete com.codemonkey.pack1 para poder acceder al constructor Punto().

4. public: Significa que siempre es visible y se puede acceder a el desde cualquier otra clase sin importar el paquete.

Ejemplo.

package com.codemonkey.pack1;


public class Ejemplo{
  
    /*Constructor public: siempre visible*/
    public Ejemplo(){
      System.out.println("Hola, mundo!!");
    }

}

El programador no tendrá problema en hacer algo como esto:


package com.codemonkey;

import com.codemonkey.pack1.Ejemplo;

//...
Ejemplo ejemplo = new Ejemplo();
//Salida:
//Hola, mundo!!


Links:

Comentarios

Entradas populares de este blog

Java Tip 20: JDBC (2da parte)

Continuamos con esta serie sobre JDBC . Como dijimos la vez anterior JDBC( Java Database Connectivity ) es el estándar de conectividad de bases de datos de Java y proporciona un mecanismo para que los programas Java se conecten a las bases de datos. En este post veremos ejemplos de su uso. Requisitos: Tener nociones de Java.  Tener nociones de SQL (usaremos H2). Tener nociones de Maven. Creando una aplicación JDBC Crearemos una sencilla aplicación que se conecte a una BD H2 (ver  tutorial ). Pasos: Crearemos una tabla a la que llamaremos Cursos. La cual tendrá los siguientes campos: id, titulo, materia, instructor, fecha y hora. Crear la aplicación Java usando Maven. Crearemos instrucciones SQL para consultar la información, ingresar nuevos cursos, actualizar y eliminar registros. Ejecutar la aplicación con Maven. 1. Creamos la tabla con sus seis campos (agregaremos los datos con la aplicación Java): CREATE OR REPLACE TABLE CURSOS( id bigint ...

Lo nuevo de Java desde la versión 12 hasta la 22

Aquí unos enlaces a varias publicaciones sobre algunos nuevos aspectos del lenguaje Java, desde la versión 12 a la 22. Expresiones Switch en Java Una nueva funcionalidad en el lenguaje: las expresiones switch. https://emanuelpeg.blogspot.com/2025/01/expresiones-switch-en-java.html API de Servidor Web Simple en Java Una API de Servidor Web Simple que permite crear servidores HTTP ligeros sin necesidad de dependencias externas. https://emanuelpeg.blogspot.com/2025/02/api-de-servidor-web-simple-en-java.html Clases Record Una implementación de las data-clases o del patrón Data Transfer Object, un tipo de clase cuyo único propósito es impulsar la programación con datos inmutables. https://alquimistadecodigo.blogspot.com/2025/02/java-clases-record.html https://emanuelpeg.blogspot.com/2025/02/record-en-java.html Clases Selladas y coincidencia de patrones en Java https://emanuelpeg.blogspot.com/2025/03/clases-selladas-y-coincidencia-de.html https://emanuelpeg.blogspo...

Java Tip 21: preguntas sobre Programación Orientada a Objetos en Java

  Nota: Este post esta basado en un artículo de linkedin llamado " Top 50 OOPs Interview Questions & Answers ". 1. ¿Qué es la POO? Es la abreviatura de Programación Orientada a Objetos . Es un paradigma de programación en la cual los programas son considerados como una colección de objetos y cada uno de esos objetos se considera una instancia de una clase. Una clase es una plantilla o modelo para crear objetos. Digamos una representación de un tipo de objeto (una casa, un mueble, una persona, etc.).  2. ¿Cuáles son los conceptos básicos de la POO? Abstracción. Encapsulación Herencia. Polimorfismo. 3. ¿Qué es la Abstracción? Es el ocultamiento de los detalles de implementación y mostrar solo las características esenciales de un objeto. 4. ¿Qué es la Encapsulación? Es un atributo de un objeto, y contiene todos los datos ocultos. Estos datos ocultos pueden restringirse a los miembros de la clase. Los niveles de acceso pueden ser: default , public , protected y    p...