派生类,基类(public,private,protect)

最近这几天学习了类的这个东西,不过都是单一的一个类操作,万一以后有多个类只是部分对象或者数据不同,那都要重新定义类,这样太麻烦了,因此有必要学习下派生类和基类这些个概念,方便类的进一步学习。

所谓,派生,就是继承基类的方法,这样你要定义很多数据和方法,要是和基类的相同,你就不用重复定义啦,只需要引用基类的,再自己添加一下所需要的,这样就大大减少了代码量,清晰,快捷,方便。

第一:首先在继承方式是public的情况下,我们对基类的成员是public还是private或者protect做出分析:

当成员是public的时候,派生类对象可以直接调用基类的这个方法和数据,当数据是private的时候,派生类的对象只能通过调用基类那里继承来的方法来访问数据,当数据是protect的时候,派生类的对象可以通过自己的方法来调用这个数据。

第二,当继承方式是private的时候,派生类的派生类不能调用他从基类继承过来的方法。即B从A以私有方式继承,那么A的所有方法和数据只能B去访问,而C只能继承B属于他自己的方法,而不能再继承A的,由于private有点复杂,实际当中最好不要用了。

第三:构造函数,派生类的构造函数继承问题: B(参数名):A(参数名),即构造函数继承,只需要对B特有的数据进行初始化即可。

下面看具体代码:

#include<iostream>
#include<string>
using namespace std;
class dadclass
{ public :
void fn_name();
dadclass(string n,string a)
{ name=n;
age =a;
}
protected:
string name;
private :
string age;
};
class s_sonclass : public dadclass
{ public:
s_sonclass(string n,string a):dadclass(n,a)
{
}
void fn_name2();
private:
};
//class b_sonclass :private dadclass
//{
//}
//class grandclass : public b_sonclass
//{
//}
int main()
{ s_sonclass s1= s_sonclass("张三","12");
s1.fn_name();
s1.fn_name2();

}
void s_sonclass::fn_name2()
{cout<<age<<endl;
}
void dadclass::fn_name()
{cout<<name<<endl;
}
/*
就公有继承来说:
基类中的public,成员函数和数据,派生类的对象可以直接调用
基类中的privae:成员数据的话,派生类的对象不能在直接用自己的方法调用,而是只能通过从基类中继承过来的方法来调用。
基类中的protected:成员数据的话,派生类的对象不能直接调用,但是可以通过自己的成员函数来调用这个数据,注意和private相区别.
也就是只要是privae数据,就只能通过本类的成员函数来调用,其他类想调用,可以,但是要通过本类的成员函数.
*/



 

posted @ 2012-02-12 01:23  RINA  阅读(4369)  评论(0编辑  收藏  举报