0Pricing
C# Academy · Lección

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

Comprobación rápida: ¿Qué significa el modificador de acceso internal en C#?

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

  1. public/internal/protected/private (con una nota sobre file)
  2. Namespaces, directivas using y global usings (nota)
  3. Tipos y archivos parciales
← Volver a C# Academy