Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Constructores de Clase | Introducción a la Programación Orientada a Objetos (OOP)
C# Más Allá de lo Básico

bookConstructores de Clase

Un constructor de clase es igual que un constructor de struct. Es un método que se ejecuta cuando se crea un objeto.

La sintaxis para crear un constructor es la siguiente:

index.cs

index.cs

copy
1234567
class className { // ... other class code public className() { // code } }

Por ejemplo:

index.cs

index.cs

copy
1234567891011121314151617
using System; class Player { public Player() { Console.WriteLine("A new player is created"); } } public class HelloWorld { public static void Main(string[] args) { Player p1 = new Player(); Player p2 = new Player(); Player p3 = new Player(); } }

Se puede observar en la salida que la instrucción Console.WriteLine dentro del constructor de Player se ejecuta cada vez que se crea un nuevo objeto.

Note
Nota

En C# 9 y versiones anteriores de C#, existen algunas diferencias entre los constructores de structs y clases. Por ejemplo, en versiones anteriores no es posible crear constructores sin parámetros para structs; sin embargo, en C# 10 y versiones más recientes, esto es compatible. Se recomienda utilizar la versión más reciente de los compiladores de C#; de lo contrario, podrían surgir errores al compilar parte del código.

A continuación se muestra un ejemplo de código del capítulo Constructores de estructuras. El término static se explica en los comentarios ya que es más relevante aquí; sin embargo, no es necesario comprenderlo completamente, ya que este concepto se explicará en detalle en secciones posteriores.

Note
Nota

A diferencia de los campos normales, un campo static puede almacenar datos incluso si no existe ningún objeto de esa clase. Los campos estáticos tienen el mismo valor para todos los objetos, por lo tanto, cambiar el valor de un campo estático desde un objeto lo cambia para todos los objetos. La clase Program representa el propio programa, por lo que si el campo estático es un miembro de la clase 'Program', entonces actúa como una variable global.

index.cs

index.cs

copy
1234567891011121314151617181920212223
using System; struct Program { public static int totalPlayers = 0; struct Player { public int id; public Player() { id = totalPlayers++; Console.WriteLine($"New Player Object Created With ID {id}"); } } static void Main(string[] args) { Player player1 = new Player(); Player player2 = new Player(); Player player3 = new Player(); } }

Para convertir la estructura Player en una clase, solo necesitas cambiar el término struct por class:

index.cs

index.cs

copy
12345678910111213141516171819202122232425262728
using System; class Program { // Unlike normal fields, a 'static' field can hold data even if there's no object. // Static fields have the same value for all objects. // Changing the value of a static field from one object changes it for all objects. // In this case the static field is part of the 'Program' class which represents the program itself // Therefore this field is essentially a global variable public static int totalPlayers = 0; struct Player { public int id; public Player() { id = totalPlayers++; Console.WriteLine($"New Player Object Created With ID {id}"); } } static void Main(string[] args) { Player player1 = new Player(); Player player2 = new Player(); Player player3 = new Player(); } }

De manera similar, también puedes tener constructores con algunos argumentos. Generalmente, este método se utiliza para facilitar la inicialización de los campos de la clase:

index.cs

index.cs

copy
12345678910111213141516171819202122232425262728
using System; class Point { public double x; public double y; public Point(double x, double y) { // 'this' keyword is also used in classes just like how its used in structs this.x = x; this.y = y; } public void showCoordinates() { Console.WriteLine($"({x}, {y})"); } } class Program { static void Main(string[] args) { Point p1 = new Point(50, 70); Point p2 = new Point(70, 90); p1.showCoordinates(); p2.showCoordinates(); } }

En este punto, ya has cubierto la mayoría de los conceptos básicos de las Classes, y según la sintaxis y el comportamiento, las Classes parecen ser exactamente iguales a las Structs; sin embargo, esto no es así. Como se indicó en el primer capítulo de esta sección, las Structs son una versión limitada de las Clases que solo proporcionan una funcionalidad básica, mientras que las características de las Clases son mucho más complejas y amplias. En esta sección has cubierto todas las características que son similares entre Classes y Structs. En las próximas dos secciones aprenderás todas las particularidades de las clases y la programación orientada a objetos.

1. ¿Cuándo se llama a un método constructor?

2. ¿Cuál será el nombre de un método constructor en una clase llamada "Animal"?

3. ¿Qué palabra clave se utiliza antes del nombre de un constructor?

question mark

¿Cuándo se llama a un método constructor?

Select the correct answer

question mark

¿Cuál será el nombre de un método constructor en una clase llamada "Animal"?

Select the correct answer

question mark

¿Qué palabra clave se utiliza antes del nombre de un constructor?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 9

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Suggested prompts:

Can you explain the main differences between classes and structs?

What are some advanced features of classes that structs don't have?

Can you give examples of when to use a class instead of a struct?

Awesome!

Completion rate improved to 2.04

bookConstructores de Clase

Desliza para mostrar el menú

Un constructor de clase es igual que un constructor de struct. Es un método que se ejecuta cuando se crea un objeto.

La sintaxis para crear un constructor es la siguiente:

index.cs

index.cs

copy
1234567
class className { // ... other class code public className() { // code } }

Por ejemplo:

index.cs

index.cs

copy
1234567891011121314151617
using System; class Player { public Player() { Console.WriteLine("A new player is created"); } } public class HelloWorld { public static void Main(string[] args) { Player p1 = new Player(); Player p2 = new Player(); Player p3 = new Player(); } }

Se puede observar en la salida que la instrucción Console.WriteLine dentro del constructor de Player se ejecuta cada vez que se crea un nuevo objeto.

Note
Nota

En C# 9 y versiones anteriores de C#, existen algunas diferencias entre los constructores de structs y clases. Por ejemplo, en versiones anteriores no es posible crear constructores sin parámetros para structs; sin embargo, en C# 10 y versiones más recientes, esto es compatible. Se recomienda utilizar la versión más reciente de los compiladores de C#; de lo contrario, podrían surgir errores al compilar parte del código.

A continuación se muestra un ejemplo de código del capítulo Constructores de estructuras. El término static se explica en los comentarios ya que es más relevante aquí; sin embargo, no es necesario comprenderlo completamente, ya que este concepto se explicará en detalle en secciones posteriores.

Note
Nota

A diferencia de los campos normales, un campo static puede almacenar datos incluso si no existe ningún objeto de esa clase. Los campos estáticos tienen el mismo valor para todos los objetos, por lo tanto, cambiar el valor de un campo estático desde un objeto lo cambia para todos los objetos. La clase Program representa el propio programa, por lo que si el campo estático es un miembro de la clase 'Program', entonces actúa como una variable global.

index.cs

index.cs

copy
1234567891011121314151617181920212223
using System; struct Program { public static int totalPlayers = 0; struct Player { public int id; public Player() { id = totalPlayers++; Console.WriteLine($"New Player Object Created With ID {id}"); } } static void Main(string[] args) { Player player1 = new Player(); Player player2 = new Player(); Player player3 = new Player(); } }

Para convertir la estructura Player en una clase, solo necesitas cambiar el término struct por class:

index.cs

index.cs

copy
12345678910111213141516171819202122232425262728
using System; class Program { // Unlike normal fields, a 'static' field can hold data even if there's no object. // Static fields have the same value for all objects. // Changing the value of a static field from one object changes it for all objects. // In this case the static field is part of the 'Program' class which represents the program itself // Therefore this field is essentially a global variable public static int totalPlayers = 0; struct Player { public int id; public Player() { id = totalPlayers++; Console.WriteLine($"New Player Object Created With ID {id}"); } } static void Main(string[] args) { Player player1 = new Player(); Player player2 = new Player(); Player player3 = new Player(); } }

De manera similar, también puedes tener constructores con algunos argumentos. Generalmente, este método se utiliza para facilitar la inicialización de los campos de la clase:

index.cs

index.cs

copy
12345678910111213141516171819202122232425262728
using System; class Point { public double x; public double y; public Point(double x, double y) { // 'this' keyword is also used in classes just like how its used in structs this.x = x; this.y = y; } public void showCoordinates() { Console.WriteLine($"({x}, {y})"); } } class Program { static void Main(string[] args) { Point p1 = new Point(50, 70); Point p2 = new Point(70, 90); p1.showCoordinates(); p2.showCoordinates(); } }

En este punto, ya has cubierto la mayoría de los conceptos básicos de las Classes, y según la sintaxis y el comportamiento, las Classes parecen ser exactamente iguales a las Structs; sin embargo, esto no es así. Como se indicó en el primer capítulo de esta sección, las Structs son una versión limitada de las Clases que solo proporcionan una funcionalidad básica, mientras que las características de las Clases son mucho más complejas y amplias. En esta sección has cubierto todas las características que son similares entre Classes y Structs. En las próximas dos secciones aprenderás todas las particularidades de las clases y la programación orientada a objetos.

1. ¿Cuándo se llama a un método constructor?

2. ¿Cuál será el nombre de un método constructor en una clase llamada "Animal"?

3. ¿Qué palabra clave se utiliza antes del nombre de un constructor?

question mark

¿Cuándo se llama a un método constructor?

Select the correct answer

question mark

¿Cuál será el nombre de un método constructor en una clase llamada "Animal"?

Select the correct answer

question mark

¿Qué palabra clave se utiliza antes del nombre de un constructor?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 9
some-alt