MODIFICADORES DE ACCESO EN JAVA PROGRAMACION ORIENTADA A OBJETOS 2
DEFINICIONES Existen muchos conceptos en programación orientada a objetos, como clases y objetos, sin embargo, en el desarrollo de software con programación orientada a objetos, existen un conjunto de ideas fundamentales que forman los cimientos del desarrollo de software. Estos pilares son: abstracción, encapsulamiento, herencia y polimorfismo. Esto no quiere decir que fuera de estos 4 pilares no existan otras ideas igual de importantes, sin embargo, estos 4 pilares representan la base de ideas más avanzadas, por lo que es crucial entenderlos.
ENCAPSULAMIENTO Es la forma en la que podemos definir como se visualiza la información o como será oculta, esto para la seguridad de la misma, un atributo principalmente aparece como un campo público, pero podemos volverlo Privado o en su defecto para otras cosas dejarlo protegido
HERENCIA Es una manera de reutilizar código, pero se define como la capacidad que tiene una clase padre de heredad sus atributos y métodos a una clase hija, y aunque hereda los atributos la clase hija tiene atributos propios. En java no existe la multi-herencia por lo cual se hace un proceso de interfaces que se asimila a loa que es una herencia múltiple sin embargo no es lo mismo.
HERENCIA
HERENCIA
HERENCIA
HERENCIA
HERENCIA
HERENCIA extends : Esta palabra reservada, indica a la clase hija cual va a ser su clase padre, es decir que por ejemplo en la clase Futbolista al poner " public class Futbolista extends SeleccionFutbol " le estamos indicando a la clase 'Futbolista' que su clase padre es la clase ' SeleccionFutbol ' o dicho de otra manera para que se entienda mejor, al poner esto estamos haciendo un " copy -paste dinámico " diciendo a la clase 'Futbolista' que se 'copie' todos los atributos y métodos públicos o protegidos de la clase ' SeleccionFutbol '. De aquí viene esa 'definición' que dimos de que la herencia en un ' copy -paste dinámico'. protected : sirve para indicar un tipo de visibilidad de los atributos y métodos de la clase padre y significa que cuando un atributo es ' protected ' o protegido, solo es visible ese atributo o método desde una de las clases hijas y no desde otra clase. super : sirve para llamar al constructor de la clase padre. Quizás en el código que hemos puesto no se ha visto muy bien, pero a continuación lo mostramos de formas más clara, viendo el constructor de los objetos pasándole los atributos:
POLIMORFISMO Se refiere a la posibilidad de definir clases diferentes que tienen métodos o atributos denominados de forma idéntica pero se comportan diferente.
ABSTRACCIÓN La abstracción es la capacidad de obtener y aislar toda la información y cualidades de un objeto que no nos parezcan relevantes, para poder encapsularlos. Para ello separamos "mentalmente" los objetos y nos centramos en su comportamiento fundamental. Gracias a ello, podemos representar las características esenciales de un objeto sin preocuparnos de las restantes.
MODIFICADORES DE ACCESO JAVA: PUBLIC, PRIVATE, PROTECTED Hasta ahora habíamos dicho que una subclase no tiene acceso a los campos de una superclase de acuerdo con el principio de ocultación de la información. Sin embargo, esto podría considerarse como demasiado restrictivo. Decimos que podría considerarse demasiado restrictivo porque limita el acceso a una subclase como si se tratara de una clase cualquiera, cuando en realidad la relación de una superclase con una subclase es más estrecha que con una clase externa. Por ello en diferentes lenguajes, Java entre ellos, se usa un nivel de acceso intermedio que no es ni public ni private , sino algo intermedio que se denomina como “acceso protegido”, expresado con la palabra clave protected , que significa que las subclases sí pueden tener acceso al campo o método. El modificador de acceso protected puede aplicarse a todos los miembros de una clase, es decir, tanto a campos como a métodos o constructores. En el caso de métodos o constructores protegidos, estos serán visibles/utilizables por las subclases y otras clases del mismo package . El acceso protegido suele aplicarse a métodos o constructores, pero preferiblemente no a campos, para evitar debilitar el encapsulamiento. En ocasiones puntuales sí resulta de interés declarar campos con acceso protegido.
MODIFICADORES DE ACCESO JAVA: PUBLIC, PRIVATE, PROTECTED Java admite una variante más en cuanto a modificadores de acceso: la omisión del mismo (no declarar ninguno de los modificadores public , private o protected ). En la siguiente tabla puedes comparar los efectos de usar uno u otro tipo de declaración en cuanto a visibilidad de los campos o métodos:
MODIFICADOR DE ACCESO POR DEFECTO (DEFAULT) Cuando no se especifica ningún modificador de acceso para una clase, método o miembro de datos, se dice estar teniendo modificador de acceso default por defecto. Los miembros de datos, clase o métodos que no se declaran utilizando ningún modificador de acceso, es decir, que tengan un modificador de acceso predeterminado, solo son accesibles dentro del mismo paquete.
MODIFICADOR DE ACCESO POR DEFECTO (DEFAULT)
MODIFICADOR DE ACCESO PRIVADO (PRIVATE) El modificador de acceso privado se especifica con la palabra clave private . Los métodos o los miembros de datos declarados como privados solo son accesibles dentro de la clase en la que se declaran. Cualquier otra clase del mismo paquete no podrá acceder a estos miembros. Las clases e interfaces no se pueden declarar como privadas ( private ).
MODIFICADOR DE ACCESO PRIVADO (PRIVATE)
MODIFICADOR DE ACCESO PROTEGIDO (PROTECTED) El modificador de acceso protegido se especifica con la palabra clave PROTECTED. Los métodos o miembros de datos declarados como PROTECTED son accesibles dentro del mismo paquete o sub-clases en paquetes diferentes.
MODIFICADOR DE ACCESO PÚBLICO (PUBLIC) El modificador de acceso público se especifica con la palabra clave public . El modificador de acceso público tiene el alcance más amplio entre todos los demás modificadores de acceso. Las clases, métodos o miembros de datos que se declaran como públicos son accesibles desde cualquier lugar del programa. No hay restricciones en el alcance de los miembros de datos públicos.
MODIFICADORES QUE NO SON DE ACCESO En Java, tenemos 7 modificadores que no son de acceso o, a veces, también llamados especificadores . Se usan con clases, métodos, variables, constructores, etc. static final abstract synchronized transient volatile Native NOTA: Use PRIVATE a menos que tenga una buena razón para no hacerlo. También evite los campos públicos, excepto las constantes.