Articulo de referencia

Modificadores de acceso

Los modificadores de acceso (o especificadores de acceso ) son palabras clave reservadas en lenguajes orientados a objetos que establecen la accesibilidad de clases , métodos y ...

Los modificadores de acceso (o especificadores de acceso ) son palabras clave reservadas en lenguajes orientados a objetos que establecen la accesibilidad de clases , métodos y otros miembros. Los modificadores de acceso son una parte específica de la sintaxis del lenguaje de programación que se utiliza para facilitar la encapsulación de componentes. [ 1 ]

En C++ , solo hay tres modificadores de acceso. C# extiende el número a seis, [ 2 ] mientras que Java tiene cuatro modificadores de acceso, pero tres palabras clave para este propósito. En Java, si no hay ninguna palabra clave antes, se usa por defecto el modificador package-private.

Cuando una clase se declara como pública, es accesible tanto para otras clases definidas en el mismo paquete como para las definidas en otros paquetes. Este es el especificador más común para las clases. Sin embargo, una clase no puede declararse como privada. Si no se especifica ningún especificador de acceso, se aplicarán las restricciones de acceso predeterminadas. La clase será accesible para otras clases del mismo paquete, pero inaccesible para las clases externas. Cuando decimos que una clase es inaccesible, simplemente significa que no podemos crear un objeto de esa clase ni declarar una variable de ese tipo. El especificador de acceso protegido tampoco se puede aplicar a una clase.

Diagrama de clases UML con modificadores de acceso.svg

Nombres de palabras clave

C++ utiliza los tres modificadores llamados public, protected, y private. [ 3 ] C# tiene los modificadores public, protected, internal, private, protected internal, private protected, y file. [ 4 ] Java tiene public, package, protected, y private; packagees el predeterminado, utilizado si no se especifica ninguna otra palabra clave de modificador de acceso. El significado de estos modificadores puede diferir de un lenguaje a otro. A continuación se presenta una comparación de las palabras clave, ordenadas de la más restrictiva a la más abierta, y su significado en estos tres lenguajes. Su visibilidad abarca desde la misma clase hasta el paquete donde se define la clase hasta un permiso de acceso general. Más abajo, el acceso máximo se escribe en la tabla.

En Swift, existen cinco niveles de acceso diferentes en relación tanto con el archivo fuente en el que se define la entidad como con el módulo que contiene dicho archivo fuente. [ 5 ]

Ejemplo

C++

importar std ;// El modificador de acceso predeterminado dentro de la estructura es público // El modificador de acceso predeterminado dentro de la clase es privado struct Base { private : int x ; protected : // Base::m, Base::n son protegidos int m ; int n ; public : void set_n ( int v ) noexcept { n = v ; }void f () { std :: println ( "llamando a Base::f()" ); } }; // Derived extiende Base con herencia pública struct Derived : public Base { private : using Base :: f ; // Derived::f es privado public : using Base :: m ; // Derived::m es público// Base::n es accesible aquí, pero no fuera de [[ nodiscard ]] int get_n () const noexcept { return n ; }// ERROR, Base::x es inaccesible aquí // int get_x() const noexcept { // return x; // } }; int main ( int argc , char * argv []) { Derived d ;// dx = 2; // ERROR, privado // dn = 2; // ERROR, protegido d . m = 2 ; // protected Base::m es accesible como Derived::md.set_n ( 2 ) ; // llama a Base::set_n(int) std :: println ( "{}" , d.get_n ( ) ) ; // salida: 2// df(); // ERROR, Base::f es inaccesible como Derived::fBase & b = d ; // b hace referencia a d y lo "ve" como si fuera de tipo Base// bx = 3; // ERROR, privado // bn = 3; // ERROR, protegido // bm = 3; // ERROR, Base::m está protegidob.set_n ( 3 ); // llama a Base::set_n(int) // std::println("{}", b.get_n()); // ERROR, la estructura 'Base' no tiene ningún miembro llamado ' get_n 'b . f (); // llama a Base::f() return 0 ; }

Referencias

Notas

  1. Mayo 2002 , págs. 199.
  2. Wagner, Bill . "Modificadores de acceso - Guía de programación en C#" . docs.microsoft.com . Consultado el 13 de enero de 2020 .
  3. "Especificadores de acceso" . en.cppreference.com . Consultado el 13 de enero de 2020 .
  4. "Modificadores de acceso (Referencia de C#)" . learn.microsoft.com . Microsoft . 27/09/2022 . Consultado el 08/02/2023 .
  5. "Control de acceso: El lenguaje de programación Swift (Swift 5.3)" . docs.swift.org . Consultado el 8 de febrero de 2021 .

Bibliografía

  • Mayo, Joseph (2002), C Sharp Unleashed , Sams publishing, ISBN 9780672321221