抽象
数据抽象:描述某类对象的属性或状态(时、分、秒)。
代码抽象:描述某类对象的共有的行为特征或具有的功能(设置时间,展示时间)。
抽象的实现:类(Clock类)。
类定义的语法形式
公有成员是类与外部的接口,任何外部函数都可以访问共有类型数据和函数。
私有成员:
(1)只允许本类中的函数访问,而类外部的任何函数都不能访问
(2)紧跟在类名称的后面声明私有变量,关键字private可以省略
保护型成员是为具有继承关系的类来设计的。
类的封装实例
类的访问
(1)类内访问:类中成员直接使用成员名访问
(2)类外访问:使用“对象名.成员名”访问public属性的成员
类的成员函数
(1)在类中说明函数原型,在类外给出函数体实现,并在函数名前使用类名限定
(2)也可以在类中给出函数体实现,形成内联成员函数(不推荐)
(3)允许声明重载函数和带默认参数值的函数
内联成员函数
成员函数的实现
class Clock {
public:
void setTime(int newH = 0, int newM = 0, int newS = 0);
void showTime();
private:
int hour, minute, second;
};
void Clock::setTime(int newH, int newM, int newS) {
hour = newH;
minute = newM;
second = newS;
}
void Clock::showTime() {
cout << hour << ":" << minute << ":" << second << endl;
}
类内初始值
(1)创建对象时,类内初始值用于初始化数据成员
(2)没有初始值的成员将被默认初始化
总代码
#include<iostream>
using namespace std;
class Clock {
public:
void setTime(int newH = 0, int newM = 0, int newS = 0);
void showTime();
private:
int hour, minute, second;
};
void Clock::setTime(int newH, int newM, int newS) {
hour = newH;
minute = newM;
second = newS;
}
void Clock::showTime() {
cout << hour << ":" << minute << ":" << second << endl;
}
int main() {
Clock myClock;
cout << "first time" << endl;
myClock.setTime();//设置时间为默认值
myClock.showTime();//显示时间
cout << "second time" << endl;
myClock.setTime(8, 30, 30);
myClock.showTime();//显示时间
return 0;
}
first time
0:0:0
second time
8:30:30