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