C++继承与c#继承


先说c#吧,之前接触的多一点,

c#只允许单继承,也就是子类只能从一个父类中继承

class  Person    //父类

{

public void playGame()       //人的基本行为,
{
Console.WriteLine("人会玩");
}
public void eatFood()
{
Console.WriteLine("人会吃食物");
}

}

class  Student:Person   //子类继承与父类 

{

public void studyWorking()
{
Console.WriteLine("学生要学习");
}

}

在main函数中创建一个student对象,

static void Main(string[] args)
{

Student s = new Student();
s.eatFood();
s.playGame();
s.studyWorking();
Console.ReadKey();
}

父类中的成员方法子类中都具有(不考虑继承方式),不难看出子类中的对象可以访问到父类中的函数,

但是c#中的子类只能从一个父类中继承,不能多继承

看c++继承方式

class Father

{

}

c++在继承的时候需要加访问修饰符,来表示继承的权限

class Son:public Father//公共继承

class Daughter:protected Father//受保护继承

class Wife:private Father//私有继承

解释一下什么叫公共继承,就是其他类的成员,只能访问Son这个类从父类继承过来的公共成员

class Base1
{
public:
int m_A;
protected:
int m_B;
private:
int m_C;
};

//公共继承
class Son1 :public Base1
{
public:
void func()
{
m_A; //可访问 public权限
m_B; //可访问 protected权限
//m_C; //不可访问
}
};

void myClass()
{
Son1 s1;
s1.m_A; //其他类只能访问到公共权限
}

保护继承,就是父类中受保护的属性被继承到子类中以后,其他类只能访问子类中受保护的属性