面向对象的概念:
变量表示属性,函数表示行为,C++编译器支持struct中使用变量和函数,还能够继承,所以可以使用struct可以用来描述类
所以以下程序在C++编译器中能够编译成功
#include <stdio.h>
struct Biology
{
bool living;
};
struct Animal : Biology
{
bool movable;
void findFood()
{
}
};
struct Plant : Biology
{
bool growable;
};
struct Beast : Animal
{
void sleep()
{
}
};
struct Human : Animal
{
void sleep()
{
printf("I'm sleeping...\n");
}
void work()
{
printf("I'm working...\n");
}
};
int main(int argc, char *argv[])
{
Human human;
human.living = true;
human.sleep();
human.work();
printf("Press any key to continue...");
getchar();
return 0;
}
类的封装:
类通常非为类的实现细节和类的使用方式两个部分。
.使用类的时候,不需要关心其实现细节。
.当创建一个类时,才需要考虑其内部实现细节
封装的基本概念:1.并不是类的每个属性都是对外公开的
2.一些类的属性是对外公开的
3. 需要在类的表示法中定义属性和行为的公开级别
C++中类的封装:成员变量---C++中用于表示类属性的变量
成员函数---C++中用于表示类行为的函数
在C++中可以给成员变量和成员函数定义访问级别 :
public-成员变量和成员函数可以在类的内部和外界访问和调用
private-成员变量和成员函数只能在类的内部被访问和调用
类成员的作用域
1.类成员的作用域都只在类的内部,外部无法直接访问:成员函数可以直接访问成员变量和调用其他成员函数
2.类的外部可以直接通过类变量访问public
c++中用struct定义的类的所有成员默认为public
类的真正形态:1.struct在c语言中已经有了自己的含义,只能继续兼容
2.c++中提供了新的关键字class用于类定义
3.class和struct的用法是完全相同的,区别在于struct定义的类,所有成员(属性和方法)的默认属性是public,
class定义的类,成员(属性和方法)的默认属性是private。
小结:类的精华在于封装,将实现和使用方式分离
C++中通过public和private实现类的封装
类的定义和实现可以分开到不同的文件中