Si tengo una clase A con un metodo publico que accede al atributo privado x,la clase B al heredar de A¿el atributo x es heredao? | Sololearn: Learn to code for FREE!
New course! Every coder should learn Generative AI!
Try a free lesson
+ 1

Si tengo una clase A con un metodo publico que accede al atributo privado x,la clase B al heredar de A¿el atributo x es heredao?

CODE!: https://code.sololearn.com/cluKA9T8hojM/?ref=app La salida del codigo es 6, sin embargo parece ser que x es solamente local a la funcion f() heredada pues he tratado de acceder a x de la clase B de varias formas -acceder asi: obj.x; -por medio de un metodo print() que imprima x. -operador de ámbito :: con las siguientes sintas: obj.A::x todas formas fallidas

6th Sep 2017, 12:09 AM
Carlos Castillo
1 Answer
+ 1
por definición, los atributos private sólo son visibles en la clase donde se declaran, y no para otras otras clases (ni siquiera sus subclases). Para que un atributo sea accesible también en sus subclases, hay que declararlo como "protected". Pero esto en tu caso tampoco funcionaría, ya que aunque "x" fuera protected, tampoco sería accesible fuera de su clase (no funciona obj.x). Entonces la solución pasaría por hacer "x" público o crear un método "getter" (como has hecho con "func") Más información : https://stackoverflow.com/questions/8241462/access-private-members-in-inheritance
5th Sep 2017, 9:27 PM
Daniel de Lizaur