问答题 public继承、protected继承、private继承的区别是什么
【正确答案】
【答案解析】public(公有)继承、protected(保护)继承和private(私有)继承是常见的3种继承方式。
(1)公有继承
当采用公有继承时,基类成员对其对象的可见性与一般类及其对象的可见性相同,公有成员可见,其他成员不可见。
基类成员对派生类的可见性对派生类来说,基类的公有成员和保护成员可见;基类的公有成员和保护成员作为派生类的成员时,它们都维持原有的状态;基类的私有成员不可见;基类的私有成员依然是私有的,派生类不可访问和保护成员。
(2)保护继承
保护继承与私有继承方式的情况相同。两者的区别在于对派生类的成员而言,基类成员对其对象的可见性与一般类及其对象的可见性相同,公有成员可见,其他成员不可见。
基类成员对派生类的可见性对派生类来说,基类的公有成员和保护成员是可见的:基类的公有成员和保护成员都作为派生类的保护成员,并且不能被这个派生类的子类所访问;基类的私有成员是不可见的;派生类不可访问基类中的私有成员。
基类对象对派生类对象的可见性对派生类对象来说,基类的所有成员都是不可见的。所以,在保护继承时,基类的成员也只能由直接派生类访问,而无法再往下继承。
(3)私有继承
在私有继承中,基类成员对其对象的可见性与一般类及其对象的可见性相同,公有成员可见,其他成员不可见。
基类成员对派生类的可见性对派生类来说,基类的公有成员和保护成员是可见的:基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问;基类的私有成员是不可见的;派生类不可访问基类中的私有成员。基类成员对派生类对象的可见性对派生类对象来说,基类的所有成员都是不可见的。所以,在私有继承时,基类的成员只能由直接派生类访问,而无法再往下继承。下表所示为成员访问控制列表。
成员访问控制
基类性质 继承性质 派生类性质
public public Public
protected public protected
private public 不能访问
public protected protected
protected protected protected
private protected 不能访问
public private pripate
protected private private
private private 不能访问