1、子类对象 不能够在自己的方法内部,直接 访问 父类的 私有属性 或 私有方法;
2、子类对象 可以通过 父类 的公有方法 间接 访问到 私有属性 或 私有方法;
私有属性、方法 是对象的隐私,不对外公开,外界 以及 子类 都不能直接访问;
私有属性、方法 通常用于做一些内部的事情;
B 的对象不能够直接访问 _num2 属性;
B 的对象不能再 demo 方法内部访问 _num2 属性;
B 的对象可以在 demo 方法内,调用父类的 test 方法;
父类的 test 方法内部,能够访问 _num2 属性和_test 方法;
class A:
def __init__(self):
self.num1 = 100
self._num2 = 200
def _test(self):
print("私有方法 %d %d " % (self.num1,self._num2))
class B(A):
def demo(self):
# 在子类的对象方法中,不能访问父类的私有属性
#print("访问父类的私有属性 %d" % self._num2)
# 调用父类的私有方法
#self._test()
pass
# 创建一个子类对象
b = B()
print(b)
b.demo()
class A:
def __init__(self):
self.num1 = 100
self._num2 = 200
def _test(self):
print("私有方法 %d %d " % (self.num1,self._num2))
def test(self):
print("父类的公有方法")
class B(A):
def demo(self):
# 在子类的对象方法中,不能访问父类的私有属性
#print("访问父类的私有属性 %d" % self._num2)
# 调用父类的私有方法
#self._test()
pass
# 访问父类的公有属性
print("子类方法 %d " %self.num1)
# 调用父类的公有方法
self.test()
pass
# 创建一个子类对象
b = B()
print(b)
b.demo()
# 在外界访问父类的公有属性/调用公有方法
print(b.num1)
b.test()