zoukankan      html  css  js  c++  java
  • protect,public,private 的区别

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

     
    以C++为例:
     
    public:  数据成员和函数成员可在成员函数,友元,继承类中直接使用。亦可以作为接口,供类的用户使用(即 A a,
    a.change())。
     
    private:  数据成员和函数成员,只能在  类成员和友元 中访问。不能被继承类访问(无论何种继承),虽然作为继承
    类的私有成员,但 在 使用过程中,是通过调用基类的构造函数 完成参数的传递的。继承类不能访问基类的私有成员。
     
    protect:  在基类中用法同private,基类对象不能访问。在派生类中,用法同基类的public, 其成员可被其继承类对象访问使用。
     
    class Base
    {    
    private:
        int age;
    protect:
        int num;
    }
    class Devi : public Base
    {
    }
    Base b;  Devi d;
    b.num=3;   //error
    d.num = 3; //ok

    继承类的用户 在使用从基类继承的成员时,不仅取决于基类在定义时的访问标号(私有,公有等),还取决
    于自身对基类的继承方式。同时,继承类 只能让访问权限越小。
     
    同时,注意区分类的接口继承与实现继承的区别。
    接口继承,即类的用户可以直接通过“.”或“->”对函数成员进行调用。
    实现继承,即在类的成员函数定义过程中,对数据成员访问权限的继承。
     
    注意区分 类成员与类用户的区别。
    类成员包括 数据成员和函数成员,讲的是类的实现。
    类用户指 类的对象,讲的是对接口的使用。 通过,对象通过 ".",指向对象的指针通过“->”。
     
    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;
    }

     
     
  • 相关阅读:
    Add source code and doc in maven
    Spring toturial note
    How to add local jar into maven project
    Ubuntu 12.04 下安装 Eclipse
    如何更改linux文件的拥有者及用户组(chown和chgrp)
    20非常有用的Java程序片段
    Java中的Set、List、Map的区别
    Java I/O知识点汇总
    Java I/O流整理
    hadoop2.0集群配置
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/2985374.html
Copyright © 2011-2022 走看看