5.2 ENCAPSULAMIENTO DE LA CLASE
Definición previa: un paquete es una colección de clases que se encuentran en el mismo directorio.
Las clases permiten implementar tipos de datos abstractos. El problema que se presenta es que desde cualquier clase se puede accesar los campos de un objeto perteneciente a otra clase. Esto es una violación al principio de abstracción que dice que un tipo de datos abstracto sólo puede ser manipulado a través de las operaciones que se definen para éste.
Visibilidad de Campos y Métodos
En java al definir una clase se puede controlar la visibilidad que tendrán sus campos y métodos al exterior de la clase. Este control se efectúa de la siguiente forma:
class A
{
private int privx;
protected int protb;
public int pubc;
int paqd;
private void MetPriv() { ... }
protected void MetProt() { ... }
public void MetPub(A a)
{
// Un campo siempre es visible
// en la clase en donde se define
... privx ... a.privx ...
... protb ... a.protb ...
... pubc ... a.pubc ...
// Un método siempre es visible
// en la clase en donde se define
MetPriv(); a.MetPriv();
}
void MetPaq() { ... }
}
Las palabras private, protected y public son atributos de un campo o un método y su significado es el siguiente:
private: El campo o método sólo es visible dentro de la clase donde se define.
protected: El campo o método es visible en la clase en donde se define y en cualquiera de sus subclases.
public: El campo o método es visible en cualquier clase.
Ninguna de las anteriores: El campo o método es visible en cualquiera de las clases pertenecientes al paquete en donde se define. Ejemplo:
class B
{
public void MetB()
{
A a= new A();
a.pubc= 1; // Ok
a.priva= 2; // error, privado
a.protb= 3; // error, B no es
// subclase de A
a.MetPub(); // Ok
a.MetPriv(); // error, privado
}
}
Visibilidad de Clases
Al declarar una clase se puede especificar que es pública usando el atributo public. De este modo la clase podrá ser usada por cualquier otra clase. Si la clase no es pública entonces la clase sólo puede ser usada dentro del paquete que la contiene.
public class Box extends GraphObj
{ ... }
Podemos hacer un resumen de los atributos que pueden tener campos, métodos o clases:
Campo: {private public protected} {final} {static}
Método: {private public protected} {final abstract} {static}
Clase: {public} {final abstract} Sólo se puede especificar uno de los atributos puestos en la misma llave.
Las clases permiten implementar tipos de datos abstractos. El problema que se presenta es que desde cualquier clase se puede accesar los campos de un objeto perteneciente a otra clase. Esto es una violación al principio de abstracción que dice que un tipo de datos abstracto sólo puede ser manipulado a través de las operaciones que se definen para éste.
Visibilidad de Campos y Métodos
En java al definir una clase se puede controlar la visibilidad que tendrán sus campos y métodos al exterior de la clase. Este control se efectúa de la siguiente forma:
class A
{
private int privx;
protected int protb;
public int pubc;
int paqd;
private void MetPriv() { ... }
protected void MetProt() { ... }
public void MetPub(A a)
{
// Un campo siempre es visible
// en la clase en donde se define
... privx ... a.privx ...
... protb ... a.protb ...
... pubc ... a.pubc ...
// Un método siempre es visible
// en la clase en donde se define
MetPriv(); a.MetPriv();
}
void MetPaq() { ... }
}
Las palabras private, protected y public son atributos de un campo o un método y su significado es el siguiente:
private: El campo o método sólo es visible dentro de la clase donde se define.
protected: El campo o método es visible en la clase en donde se define y en cualquiera de sus subclases.
public: El campo o método es visible en cualquier clase.
Ninguna de las anteriores: El campo o método es visible en cualquiera de las clases pertenecientes al paquete en donde se define. Ejemplo:
class B
{
public void MetB()
{
A a= new A();
a.pubc= 1; // Ok
a.priva= 2; // error, privado
a.protb= 3; // error, B no es
// subclase de A
a.MetPub(); // Ok
a.MetPriv(); // error, privado
}
}
Visibilidad de Clases
Al declarar una clase se puede especificar que es pública usando el atributo public. De este modo la clase podrá ser usada por cualquier otra clase. Si la clase no es pública entonces la clase sólo puede ser usada dentro del paquete que la contiene.
public class Box extends GraphObj
{ ... }
Podemos hacer un resumen de los atributos que pueden tener campos, métodos o clases:
Campo: {private public protected} {final} {static}
Método: {private public protected} {final abstract} {static}
Clase: {public} {final abstract} Sólo se puede especificar uno de los atributos puestos en la misma llave.
by: Celia Rubí Náfate Velázquez.
0 Comments:
Post a Comment
<< Home