假设我有一个名为 Food 的类,它的一个子类名为 Chicken ,然后是后者的一个子类,名为 Fillet 。 Fillet类也会继承Food类吗?另外,将Fillet称为Food类的另一个子类是正确的吗?
答案 0 :(得分:1)
简单回答:是的,两个问题。每个子类都从其所有父级继承所有行为和方法(如果它们可见)。
答案 1 :(得分:0)
取决于访问说明符私有,公开,受保护。
Food
的所有公开成员都将由Fillet
继承。
我认为源代码会对您有所帮助。
class base
{
public:
int x;
protected:
int y;
private:
int z;
};
class publicDerived: public base
{
// x is public
// y is protected
// z is not accessible from publicDerived
};
class protectedDerived: protected base
{
// x is protected
// y is protected
// z is not accessible from protectedDerived
};
class privateDerived: private base
{
// x is private
// y is private
// z is not accessible from privateDerived
}
答案 2 :(得分:0)
Excepting Object,没有超类,每个类都有一个且只有一个直接超类(单继承)。在没有任何其他显式超类的情况下,每个类都隐式地是Object的子类。 类可以从派生自类的类派生的类派生,依此类推,最终派生自最顶层的类Object。据说这样的类是继承链中延伸回Object的所有类的后代。
因此Fillet
是Food
的后代和Chicken
的子类。
它将从其父类的超类中显式继承,具体取决于最顶级类中使用的访问修饰符。