`
thecloud
  • 浏览: 884881 次
文章分类
社区版块
存档分类
最新评论

protect,public,private 的区别

 
阅读更多
简单介绍一下 protect,public,private 的区别,更详细的随后不上。 欢迎纠错~

以C++为例:
public: 数据成员和函数成员可在成员函数,友元,继承类中直接使用。亦可以作为接口,供类的用户使用(即 A a,
a.change())。
private: 数据成员和函数成员,只能在 类成员和友元 中访问。不能被继承类访问(无论何种继承),虽然作为继承
类的私有成员,但 在 使用过程中,是通过调用基类的构造函数 完成参数的传递的。继承类不能访问基类的私有成员。
protect: 在基类中用法同private,基类对象不能访问。在派生类中,用法同基类的public, 其成员 可被子类访问使用,但不可被 继承类对象直接调用
#include <iostream>
using namespace std;

class Base
{    
private:
    int age;
protected:
    int num;
public:
    virtual void show()
    {
	    num = 1;
	    cout<<num<<endl;
    }
};

class Devi : public Base
{
public:
    void show()
    {
	    num = 2;
	    cout<<num<<endl;
    }
};


int main()
{
Base b; 
Devi d;
b.show();
d.show();  //ok   protected  num可被子类使用
//b.num=3;   //error   
//d.num = 3; //error  protected  num 不可被子类  对象使用

return 0;
}


继承类的用户 在使用从基类继承的成员时,不仅取决于基类在定义时的访问标号(私有,公有等),还取决
于自身对基类的继承方式。同时,继承类 只能让访问权限越小。
同时,注意区分类的接口继承与实现继承的区别。
接口继承,即类的用户可以直接通过“.”或“->”对函数成员进行调用。
实现继承,即在类的成员函数定义过程中,对数据成员访问权限的继承。
注意区分 类成员与类用户的区别。
类成员包括 数据成员和函数成员,讲的是类的实现。
类用户指 类的对象,讲的是对接口的使用。 通过,对象通过 ".",指向对象的指针通过“->”。
Class A
{
public:
   A(string& Name = "lihao",int Age = 21)
   {}
   virtual void print()const;
private :
   string name;
   int age;
}

void A::print()const
{
   cout<<name<<endl
    <<age<<endl;
}

Class B:public A
{
public:
    B(string& Name,int Age,int Grade):A(Name,Age),grade(Grade)
    {}
private:
    int grade;
}

void B::print()const
{
     A::print();
     cout<<grade<<endl;
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics