Diferencia/función entre Private y Public en Java #113
-
"No entiendo qué hacen exactamente Private y Public en Java, entiendo que limitan el acceso, pero no cómo ni cuánto. Es decir, no entiendo de qué formas se puede acceder a esos métodos/variables con cada uno y de cuales no." |
Beta Was this translation helpful? Give feedback.
Replies: 7 comments
-
Public y Private son dos de los modificadores de acceso de Java, indican quien puede acceder a atributos, métodos y clases.
En general, lo que definimos como publico es la interfaz (lo mensajes) que queremos que se use para interactuar con nuestros objetos, mientras que posiblemente dejemos como privados métodos que no tiene sentido exponer (ademas de los atributos). Por ejemplo: class Golondrina {
private int energia;
public void comer(int alpiste) {
this.procesarComida(alpiste);
this.aumentarEnergia(alpiste*10);
}
private void procesarComida(int alpiste) {
// alguna logica que no tiene sentido que suceda en algun otro momento que no sea cuando
// la golondrina come, por lo que nadie deberia usar este metodo por si solo
}
} Existen también otros dos modificadores, pero en la materia solo solemos usar uno más ademas de public y private: protected. En este caso todo lo que sea protected puede ser accedido por las clases hijas ademas de la clase que lo contiene, quedando "en el medio" de public y private en cuanto a restriccion. *: como aclaración, el encapsulamiento igualmente puede romperse aunque tengas los atributos privados, pero es un paso adelante para que no suceda. |
Beta Was this translation helpful? Give feedback.
-
@SebaAmt te sirvio ? |
Beta Was this translation helpful? Give feedback.
-
@SebaAmt cierro el issue, cualquier cosa si quedaron dudas volvelo a abrir. |
Beta Was this translation helpful? Give feedback.
-
Sí sí, me sirvió, pero no me queda del todo claro como es eso de que otra clase "acceda directamente", quizás con ejemplos en código de lo que sería "acceder directamente" y qué significa eso de que sólo la clase puede acceder a sus métodos y eso me quedaría más claro. No estoy seguro si acceder directamente sería por ejemplo golondrina.energia o golondrina.energia += 1 y de otra forma golondrina.getEnergia() y golondrina.setEnergia(1000); por ejemplo. Y si que solo la clase pueda acceder a sus atributos se refiere a dentro del código de la misma clase o qué... |
Beta Was this translation helpful? Give feedback.
-
Perdón por la tardanza, me están comiendo vivo las exactas |
Beta Was this translation helpful? Give feedback.
-
Creo que con un ejemplo en código para cada uno de los casos sería más ilustrativo |
Beta Was this translation helpful? Give feedback.
-
Si no me equivoco, y siguiendo el ejemplo que pusiste, lo que haría el private es que solo puedas llamar a procesarComida dentro la clase. Osea que literalmente el código .procesarComida esté dentro de: class Golondrina {
...
} Si querés hacer: class SantuarioDeAves {
unaGolondrina = new Golodrina();
unaGolondrina.procesarComida();
} no debería dejarte ya que ".procesarComida()" no está dentro de class Golondrina { ... } |
Beta Was this translation helpful? Give feedback.
Si no me equivoco, y siguiendo el ejemplo que pusiste, lo que haría el private es que solo puedas llamar a procesarComida dentro la clase. Osea que literalmente el código .procesarComida esté dentro de:
Si querés hacer:
no debería dejarte ya que ".procesarComida()" no está dentro de class Golondrina { ... }