Métodos vs constructores en Java

Acabo de comenzar a progtwigr con Java. El texto que usamos es deficiente cuando hablamos de métodos y constructores. No estoy seguro de qué es exactamente un método o un constructor y qué hace que cada uno sea único. ¿Puede alguien ayudarme a definirlos y diferenciarlos?

La diferencia importante entre los constructores y los métodos es que los constructores inicializan los objetos que se crean con el new operador, mientras que los métodos realizan operaciones en objetos que ya existen.

Los constructores no pueden ser llamados directamente; se les llama implícitamente cuando la new palabra clave crea un objeto. Los métodos pueden invocarse directamente sobre un objeto que ya se ha creado con new .

Las definiciones de constructores y métodos parecen similares en el código. Pueden tomar parámetros, pueden tener modificadores (p. Ej., public ) y tienen cuerpos de métodos entre llaves.

Los constructores deben nombrarse con el mismo nombre que el nombre de clase. No pueden devolver nada, incluso void (el objeto en sí es el retorno implícito).

Los métodos deben declararse para devolver algo, aunque puede ser void .

La principal diferencia es

1. Los constructores se usan para inicializar el estado del objeto, mientras que el método expone el comportamiento del objeto.

2. El constructor no debe tener el tipo de devolución donde el método debe tener el tipo de devolución.

3. Nombre del constructor igual que el nombre de la clase donde como método puede o no el mismo nombre de clase.

4. El constructor invoca implícitamente como método invocar explícitamente.

5. El comstackdor del constructor proporciona el constructor predeterminado donde el comstackdor de métodos no proporciona.

Otros instructores y asistentes de enseñanza de vez en cuando me dicen que los constructores son métodos especializados. Siempre sostengo que en Java los constructores NO son métodos especializados .

Si los constructores fueran métodos en absoluto, esperaría que tuvieran las mismas habilidades que los métodos. Que al menos serían similares en más formas de lo que son diferentes.

¿En qué se diferencian los constructores de los métodos? Déjame contar las formas…

  1. Los constructores deben invocarse con el new operador, mientras que los métodos no pueden invocarse con el new operador. Relacionado: Los constructores no pueden llamarse por nombre, mientras que los métodos deben llamarse por nombre.

  2. Los constructores pueden no tener un tipo de devolución, mientras que los métodos deben tener un tipo de devolución.

  3. Si un método tiene el mismo nombre que la clase, debe tener un tipo de devolución. De lo contrario, es un constructor. El hecho de que pueda tener dos firmas MyClass () en la misma definición de clase que se tratan de manera diferente debería convencer a todos que los constructores y los métodos son entidades diferentes:

     public class MyClass { public MyClass() { } // constructor public String MyClass() { return "MyClass() method"; } // method } 
  4. Los constructores pueden inicializar constantes de instancia mientras que los métodos pueden no.

  5. Los constructores públicos y protegidos no se heredan mientras que los métodos públicos y protegidos se heredan.

  6. Los constructores pueden llamar a los constructores de la superclase o de la misma clase, mientras que los métodos pueden no llamar a super () o this ().

Entonces, ¿qué es similar sobre métodos y constructores?

  1. Ambos tienen listas de parámetros.

  2. Ambos tienen bloques de código que se ejecutarán cuando ese bloque sea llamado directamente (métodos) o invocado a través de new (constructores).

En cuanto a los constructores y los métodos que tienen los mismos modificadores de visibilidad … los campos y métodos tienen más modificadores de visibilidad en común.

  1. Los constructores pueden ser: privados , protegidos , públicos .

  2. Los métodos pueden ser: privado , protegido , público , abstracto , estático , final , sincronizado , nativo , strictfp .

  3. Los campos de datos pueden ser: privados , protegidos , públicos , estáticos , finales , transitorios , volátiles .

En conclusión

En Java, la forma y función de los constructores es significativamente diferente a la de los métodos. Por lo tanto, llamarlos métodos especializados en realidad hace que sea más difícil para los nuevos progtwigdores aprender las diferencias. Son mucho más diferentes que similares y aprenderlos como entidades diferentes es fundamental en Java.

Reconozco que Java es diferente a otros lenguajes en este sentido, es decir, C ++, donde el concepto de métodos especializados se origina y es respaldado por las reglas del lenguaje. Pero, en Java, los constructores no son en absoluto métodos, mucho menos métodos especializados.

Incluso javadoc reconoce que las diferencias entre los constructores y los métodos superan las similitudes; y proporciona una sección separada para los constructores.

Un constructor es un tipo especial de método que le permite crear una nueva instancia de una clase. Se ocupa de la lógica de inicialización.

En Java, las clases que escribes son Objetos. Los constructores construyen esos objetos. Por ejemplo, si tengo Apple.class así:

 public class Apple { //instance variables String type; // macintosh, green, red, ... /** * This is the default constructor that gets called when you use * Apple a = new Apple(); which creates an Apple object named a. */ public Apple() { // in here you initialize instance variables, and sometimes but rarely // do other functionality (at least with basic objects) this.type = "macintosh"; // the 'this' keyword refers to 'this' object. so this.type refers to Apple's 'type' instance variable. } /** * this is another constructor with a parameter. You can have more than one * constructor as long as they have different parameters. It creates an Apple * object when called using Apple a = new Apple("someAppleType"); */ public Apple(String t) { // when the constructor is called (ie new Apple() ) this code is executed this.type = t; } /** * methods in a class are functions. They are whatever functionality needed * for the object */ public String someAppleRelatedMethod(){ return "hello, Apple class!"; } public static void main(String[] args) { // construct an apple Apple a = new Apple("green"); // 'a' is now an Apple object and has all the methods and // variables of the Apple class. // To use a method from 'a': String temp = a.someAppleRelatedMethod(); System.out.println(temp); System.out.println("a's type is " + a.type); } } 

Espero haber explicado todo en los comentarios del código, pero aquí hay un resumen: los constructores ‘construyen’ un objeto de tipo de la clase. El constructor debe tener el mismo nombre que la clase. Se usan sobre todo para inicializar los métodos varibales de instancia. Los métodos son la funcionalidad de los objetos.

Un “método” es una “subrutina” es un “procedimiento” es una “función” es un “subprogtwig” es un … El mismo concepto tiene muchos nombres diferentes, pero básicamente es un segmento de código nombrado que puede ” llamar “desde otro código”. En general, el código está bien empaquetado de alguna manera, con un “encabezado” de algún tipo que le da su nombre y parámetros y un “cuerpo” activado por BEGIN & END o { & } o algo así.

Un “consrtructor” es una forma especial de método cuyo propósito es inicializar una instancia de una clase o estructura.

En Java, el encabezado de un método es ( , , ...) y un método el cuerpo está entre corchetes por {} .

Y puede decirle a un constructor de otros métodos porque el constructor tiene el nombre de clase para su y no tiene declarado .

(En Java, por supuesto, crea una nueva instancia de clase con el new operador – new ( ) .

la diferencia r :

  1. El constructor debe tener el mismo nombre que la clase, pero el método se puede hacer con cualquier nombre.
  2. Las clases secundarias no heredan el constructor automáticamente mientras que el método heredarán de su clase principal a menos que estén protegidas por una palabra clave privada.
  3. Constructor r llamó explícitamente mientras que los métodos implicitamente.
  4. Constructor no tiene ningún tipo de devolución mientras que el método tiene.

Constructor es una función especial utilizada para inicializar el miembro de datos, donde los métodos son funciones para realizar tareas específicas.

El nombre del constructor es el mismo nombre que el nombre de la clase, donde el nombre del método puede o no ser el nombre de la clase.

Constructor no permite ningún tipo de devolución, donde los métodos permiten el tipo de devolución.


Constructor generalmente es el Método .

Cuando creamos el objeto de un nuevo operador de clase, utilizamos un tipo especial de método llamado constructor.

Constructor solía realizar la inicialización de la variable de instancia.

Código:

 public class Diff{ public Diff() { //same as class name so constructor String A = "Local variable A in Constructor:"; System.out.println(A+ "Contructor Print me"); } public void Print(){ String B = "Local variable B in Method"; System.out.println(B+ "Method print me"); } public static void main(String args[]){ Diff ob = new Diff(); } } 

`

  • Salida:

    Variable local A en Constructor: Contructor Imprimirme

Entonces, solo muestre aquí el método Constructor Diff () porque creamos el objeto de clase Diff. En ese caso, el constructor siempre es el primero en crear una instancia de clase aquí clase Diff ().

típicamente,

Constructor es una característica configurada.

Todo comienza aquí, cuando llamamos al objeto ob en el método principal, el constructor toma esta clase y crea una copia y se carga en el “Cargador de clase de la máquina virtual Java”.

Este cargador de clases toma esta copia y la carga en la memoria, por lo que ahora podemos utilizarla haciendo referencia.

Constructor hizo su trabajo, luego Method llegó y se hizo su implementación real.

En este progtwig cuando llamamos

 ob.print(); 

entonces el método vendrá.

Gracias

Arindam

La diferencia principal se da a continuación –

1: Constructor debe tener el mismo nombre que el nombre de clase, mientras que este no es el caso de los métodos

 class Calendar{ int year = 0; int month= 0; //constructor public Calendar(int year, int month){ this.year = year; this.month = month; System.out.println("Demo Constructor"); } //Method public void Display(){ System.out.println("Demo method"); } } 

2: Constructor inicializa los objetos de una clase mientras que el método no. Los métodos realizan operaciones en objetos que ya existen. En otras palabras, para llamar a un método, necesitamos un objeto de la clase.

 public class Program { public static void main(String[] args) { //constructor will be called on object creation Calendar ins = new Calendar(25, 5); //Methods will be called on object created ins.Display(); } } 

3: Constructor no tiene el tipo de devolución, pero un método debe tener un tipo de devolución

 class Calendar{ //constructor – no return type public Calendar(int year, int month){ } //Method have void return type public void Display(){ System.out.println("Demo method"); } }