面向对象介绍1,2是方法论,省略。
(1)类声明
(2)公有、私有、保护成员
(3)数据抽象和封装
1、类声明
//类是一种用户自定义类型,声明形式:
class类名称
{
public:
公有成员(外部接口)
private:
私有成员
protected:
保护成员
};
¥以时钟显示为例:有头文件(Clock.h),源文件(Clock.cpp),测试文件(test.cpp)
//Clock.h
//#pragma once //防止文件重复定义,推荐下面这种写法,提高移植性 #ifndef _CLOCK_H_ #define _CLOCK_H_ class Clock { public: int hour_; int minute_; int second_; public: void Display(); void Init(int hour,int minute,int second); }; #endif // ! _CLOCK_H_
//Clock.cpp
#include "Clock.h" #include <iostream> using namespace std; void Clock::Display() { cout << hour_ << ":" << minute_ << ":" << second_ << endl; } void Clock::Init(int hour,int minute, int second) { hour_ = hour; minute_ = minute; second_ = second; }
//test.cpp
#include <iostream> #include <cstdio> #include "Clock.h" using namespace std; int main(void) { Clock c; c.Init(10,10,10); c.Display(); c.second_ += 1; c.Display(); return 0; } /* 输出结果: 10:10:10 10:10:11 */
2、公有、私有、保护成员
¥在关键字public后面声明,它们是类与外部的接口,任何外部函数都可以访问公有类型数据和函数。
¥在关键字private后面声明,只允许本类中的函数访问,而类外部的任何函数都不能访问。
¥在关键字protected后面声明,与private类似,其差别表现在继承与派生时对派生类的影响不同。
3、数据抽象和封装
¥数据抽象是一种依赖于接口和实现分离的编程(和设计)技术,类设计者必须关心类是如何实现的,但使用该类的程序员不必了解这些细节。使用者只要抽象地考虑该类型做什么,而不必具体地考虑该类如何工作。
¥封装是一项将低层次地元素组合起来形成新的、高层次的实体的技术,函数是封装的一种形式,函数所执行的细节行为被封装在函数这个更大的实体中,。被封装的元素隐藏了他们的实现细节------可以调用函数,但是不能直接访问函数所执行的语句。同样地,类也是一种封装地实体:它代表若干成员地聚集,设计良好地类隐藏了类实现地细节。