类的封装,即public, private, protected关键字
来源:互联网 发布:攀枝花 枪击 知乎 编辑:程序博客网 时间:2024/05/16 05:16
类class的使用可以更好的实现对数据结构的封装。在c++中,使用了public, private, protected来实现封装。
下面是个简单的例子,class A定义了三个变量分别标识了三种不同的属性。
1.当直接访问A的成员时,只有public成员是可以访问的,另外两个是不能被访问的。
2.但是对于子类来说,protected是可以访问的,但是 private是不能访问的。
3. 不论是public继承还是private继承,子类成员函数对父类成员的访问不因继承类型而改变。
public和protected类型都是可以访问的,而private是不能访问的。
4. public继承和private继承将影响到,通过子类访问父类成员的情况。
public继承时,父类的成员仍然保持了在父类时的属性。
private继承时,父类的成员将不能被访问,即使其在父类中是public的。
5. 第四点同样影响到了子类继承时的表现。
下面例子中,class E的成员函数能像对象b一样访问父类的成员。
而class F的成员也是像对象c一样,不能访问父类的成员。
// =====================================================================================
//
// Filename: class.cpp
//
// Description: investigate the public,private,protected usage
//
// Version: 1.0
// Created: 07/17/2010 01:32:49 AM
// Revision: none
// Compiler: g++
//
// Author: Wizard (), wizarddewhite@gmail.com
// Company:
//
// =====================================================================================
#include <iostream>
using namespace std;
class A
{
public:
int pub_mem;
protected:
int pro_mem;
private:
int pri_mem;
};
class B: public A
{
public:
B()
{
pub_mem = 9;
pro_mem = 9; // allowed! protected
// pri_mem = 9; // not allowed, private
}
};
class C: private A
{
public:
C()
{
pub_mem = 9;
pro_mem = 9; // allowed! protected
// pri_mem = 9; // not allowed, private
}
};
class D: protected A
{
public:
D()
{
pub_mem = 9;
pro_mem = 9;
// pri_mem = 9; // not allowed, private
}
};
class E: public B
{
public:
E()
{
pub_mem = 9;
pro_mem = 9; // allowed! protected
// pri_mem = 9; // not allowed, private
}
};
class F: public C
{
public:
F()
{
// pub_mem = 9; // not allowed,
// pro_mem = 9; // not allowed,
// pri_mem = 9; // not allowed, private
}
};
class G: public D
{
public:
G()
{
pub_mem = 9;
pro_mem = 9;
// pri_mem = 9; // not allowed, private
}
};
int main ( int argc, char *argv[] )
{
A a;
B b;
C c;
D d;
/* A is the base class */
a.pub_mem = 9;
// a.pro_mem = 9;// not allowed, protected
// a.pri_mem = 9;// not allowed, private
/* B is inherited from A, publicly */
b.pub_mem = 9;
// b.pro_mem = 9;// not allowed, protected
// b.pri_mem = 9;// not allowed, private
/* D is inherited from A, protected */
// d.pub_mem = 9; // not allowed,
// d.pro_mem = 9;
// d.pri_mem = 9;
/* C is inherited from A, private */
// c.pub_mem = 9;// not allowed, even this is public, it is iherited with private
// c.pro_mem = 9;// not allowed, protected
// c.pri_mem = 9;// not allowed, private
return 1;
} // ---------- end of function main ----------
- 类的封装,即public, private, protected关键字
- 类的封装和应用 三个关键字 Public protected private _set() _get()
- public,private,protected关键字
- private protected internal public 关键字的用法
- Public-protected-friendly-private关键字的区别
- C++ 类关键字public、protected、private区别
- public、protected、默认、private关键字
- C++关键字: public, private, protected
- 继承关键字:public private protected
- 区别C++类的public,private,protected
- PHP 类的private protected public 详解
- 封装性(var与public,protected,private的关系)
- C++的访问权限控制关键字:private / public / protected
- java中public,private,protected等关键字的使用场景。
- PHP5的72变:理解类中public,private,protected关键字-访问控制--第1变
- OC-010.OC类中的修饰可见性的关键字@private、@protected、@public
- OC封装、继承、多态,@ public,@ protected,@private
- Java关键字系列(public,protected,private)
- C++ placement new
- 如何匹配
- 虚函数
- 编程语言应用领域(转)
- [转]ASP.NET优化10条
- 类的封装,即public, private, protected关键字
- C++ volatile
- 函数重载(overload)、覆盖(override)、隐藏(hide)的区别
- Hibernate的查询方式
- 本BLOG开张
- 如何在NT下获取进程的路径
- C++primer 实现queue的模板类
- 超链接样式和水平线样式
- 5 things you didn't know about ... the Java Collections API