+ 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
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