public/internal/protected/private (con una nota sobre file)
Aprenda cómo public, internal, protected y private modifican la visibilidad; conozca las reglas de herencia y del mismo ensamblado. Tenga en cuenta que el acceso con ámbito de archivo no existe en C# 6.
public/internal/protected/private (con una nota sobre file) es una lección gratuita de C# Academy en CoddyKit. Esta es la lección 1 de 3. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C# Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C# Academy incluye 3 lecciones en total.
Descripción general de los modificadores de acceso
Objetivo: Elija la visibilidad adecuada.
- public: en cualquier lugar
- internal: en el mismo ensamblado
- protected: clases derivadas
- private: en la misma clase
- file: posterior a C# 6 (solo informativo)
private frente a public
Mantenga los campos private y exponga miembros public validados.
using System;
// private: only inside the class; public: everywhere the class is visible
public class Box
{
private int _width; // hidden storage
public int Width // controlled access
{
get { return _width; }
set { _width = value < 0 ? 0 : value; } // simple guard
}
}
public class Program
{
public static void Main(string[] args)
{
Box b = new Box();
// b._width = -5; // INVALID: private (kept as comment)
b.Width = 10; // OK: public property
Console.WriteLine("Width = " + b.Width);
}
}
protected en la herencia
protected se usa para la herencia: los tipos derivados pueden utilizarlo, pero el código externo no.
using System;
public class BaseCounter
{
protected int Count; // derived classes can see this
public int Value() { return Count; }
}
public class StepCounter : BaseCounter
{
public void Step() { Count = Count + 1; } // allowed: protected
}
public class Program
{
public static void Main(string[] args)
{
StepCounter sc = new StepCounter();
sc.Step();
// sc.Count = 5; // INVALID from outside (commented)
Console.WriteLine("Value = " + sc.Value());
}
}
Acceso internal
internal limita la visibilidad al ensamblado actual (la compilación de una biblioteca o aplicación).
using System;
// internal type: visible only inside this assembly
internal class InternalHelper
{
public static string Ping() { return "pong"; }
}
// public type can use internal from the same assembly
public class UsesInternal
{
public string Call() { return InternalHelper.Ping(); }
}
public class Program
{
public static void Main(string[] args)
{
UsesInternal u = new UsesInternal();
Console.WriteLine(u.Call());
}
}
protected internal
protected internal significa que es accesible para los tipos derivados o desde cualquier lugar del mismo ensamblado.
using System;
public class LibraryBase
{
// Accessible to derived types OR anywhere in the same assembly
protected internal void Touch() { Console.WriteLine("touched"); }
}
public class LibChild : LibraryBase
{
public void Use() { Touch(); } // via inheritance
}
public class Program
{
public static void Main(string[] args)
{
LibChild c = new LibChild();
c.Use();
LibraryBase b = new LibraryBase();
b.Touch(); // same assembly, allowed
}
}
Nota sobre el modificador file y consejos
Nota: El modificador de acceso file se introdujo en versiones más recientes de C# (no está disponible en C# 6). En C# 6, limítese a public, internal, protected, private y protected internal.
- Prefiera private de forma predeterminada
- Use public solo para la superficie de la API
- Use internal para ocultar la implementación a otros ensamblados
- Use protected para la cooperación entre la clase base y las derivadas
Significado de internal
Resumen
Resumen: Elija la visibilidad mínima necesaria: private → protected/internal → public. C# 6 no incluye el modificador file más reciente; use internal para ocultar elementos a nivel de ensamblado.
Preguntas frecuentes
¿La lección «public/internal/protected/private (con una nota sobre file)» es gratis?
Sí — el texto completo de «public/internal/protected/private (con una nota sobre file)» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C# Academy, actualiza a CoddyKit PRO. El curso de C# Academy incluye 3 lecciones en total.
¿Qué aprenderé en «public/internal/protected/private (con una nota sobre file)»?
Aprenda cómo public, internal, protected y private modifican la visibilidad; conozca las reglas de herencia y del mismo ensamblado. Tenga en cuenta que el acceso con ámbito de archivo no existe en C#… Practicas C# Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar C# Academy?
No se requiere experiencia previa. C# Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 3.
¿Cuánto tiempo toma la lección «public/internal/protected/private (con una nota sobre file)»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de C# Academy?
Sí. Cada lección de C# Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- public/internal/protected/private (con una nota sobre file)
- Namespaces, directivas using y global usings (nota)
- Tipos y archivos parciales