+ 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