Documente Academic
Documente Profesional
Documente Cultură
Niveles de Accesibilidad
PUBLIC La palabra clave public es un modificador de acceso para tipos y miembros de tipos. El acceso de tipo public corresponde al nivel de acceso menos restrictivo. No existen restricciones para obtener acceso a los miembros pblicos, como en este ejemplo:
Niveles de Accesibilidad
PRIVATE La palabra clave private es un modificador de acceso de miembros. El acceso de tipo private corresponde al nivel de acceso ms restrictivo. Los miembros privados slo son accesibles dentro del cuerpo de la clase o estructura en la que se declaran, como en el siguiente ejemplo.
Niveles de Accesibilidad
PROTECTED La palabra clave protected es un modificador de acceso a miembros. Un miembro protegido es accesible dentro de su clase y por clases derivadas. Encontrar una comparacin de protected con los otros modificadores de acceso en Niveles de accesibilidad. Un miembro protegido de una clase base es accesible en una clase derivada slo si el acceso se realiza a travs del tipo de la clase derivada.
Niveles de Accesibilidad
PROTECTED
using System; class A { protected int x = 123; } class B : A { static void Main() { A a = new A(); B b = new B(); // Error CS1540, because x can only be accessed by // classes derived from A. // a.x = 10;
Niveles de Accesibilidad
INTERNAL
La palabra clave internal es un modificador de acceso para tipos y miembros de tipos. Los tipos o miembros internos slo son accesibles dentro de los archivos del mismo ensamblado, como en este ejemplo:
public class BaseClass { // Only accessible within the same assembly internal static int x = 0; }
Un uso habitual del acceso de tipo interno se da en el desarrollo basado en componentes, ya que permite a un grupo de componentes cooperar de manera privada sin estar expuesto al resto del cdigo de la aplicacin. Por ejemplo, un marco de trabajo para compilar interfaces grficas de usuario podra proporcionar clases Control y Form que cooperan mediante miembros con acceso interno. Como estos miembros son internos, no estn expuestos al cdigo que utiliza la estructura.
class Motor { int caballos; public Motor() { } public Motor(int c) { caballos = c; } public int Caballos { set { caballos = value; } get { return caballos; } } }
class Puerta {
// Herede de la clase Auto class FordCapri : Auto { public FordCapri(Puerta xa) : base (xa) { Motor theMotor = new Motor(); theMotor.Caballos = 2000; } }
Polimorfismo
public class Cuenta { private string idCuenta; // Nmero de la cuenta
public Cuenta(string prmtIdCuenta) { this.idCuenta = prmtIdCuenta; System.Console.WriteLine( "Instancia creada para cuenta {0}",prmtIdCuenta); } public void CalcularIntereses() { System.Console.WriteLine("Cuenta.CalcularIntereses()"); } }
Polimorfismo
public class CuentaCorriente : Cuenta { public CuentaCorriente(string prmtIdCuenta) : base(prmtIdCuenta) { } new public void CalcularIntereses() { System.Console.WriteLine( "CuentaCorriente.CalcularIntereses()"); } } public class CuentaAhorro : Cuenta { public CuentaAhorro(string prmtIdCuenta) : base(prmtIdCuenta) { } new public void CalcularIntereses() { System.Console.WriteLine( "CuentaAhorro.CalcularIntereses()"); } }
Polimorfismo
public static void Main(string[] args) { // Creamos instancia de clase base Cuenta cuenta = new Cuenta(CUENTA); // Creamos instancia de clase derivada CuentaCorriente cuentaCorriente = new CuentaCorriente(CUENTA); // Creamos instancia de clase derivada CuentaAhorro cuentaAhorro = new CuentaAhorro(CUENTA); // Invocamos mtodo de la clase base cuenta.CalcularIntereses(); // Invocamos mtodo de la clase derivada cuentaCorriente.CalcularIntereses(); // Invocamos mtodo de la clase derivada cuentaAhorro.CalcularIntereses(); } }
Abstract Class
public class ClaseVirtual { public int cv = 5; public ClaseVirtual() {} public virtual int DoWork(int i) { return i * 5; } public void MetodoVirtual() { } } public abstract class ClaseAbstracta : ClaseVirtual { protected int ca = 3; public ClaseAbstracta() { base.cv = 6; } public abstract override int DoWork(int i); public void MetodoAbstracta() { } }
Abstract Class
public class ClaseSimple : ClaseAbstracta { public ClaseSimple() { } public override int DoWork(int i) { // New implementation. return i * base.cv + base.ca; } public void MetodoSimple() { }
}
static void Main(string[] args) { int resultado; ClaseVirtual cs = new ClaseSimple(); Console.WriteLine("Area of Square = {0:F2}", resultado = cs.DoWork(3)); }
Interfaces
interface ISampleInterface { void SampleMethod(); }
class ImplementationClass : ISampleInterface { // Explicit interface member implementation: void ISampleInterface.SampleMethod() { // Method implementation. } static void Main() { // Declare an interface instance. ISampleInterface obj = new ImplementationClass();