c++面向对象的三大特性:封装,继承,多态
c++认为万事万物都是对象,对象有他的属性和行为。
例如:
人可以作为对象,属性有姓名年龄。。。行为有走,跑。。
具有相同性质的对象,我们可以抽象为称为类,人属于人类。
4.1封装
4.1.1封装的意义
意义:
- 将属性和行为作为一个整体。
- 将属性和行为加以权限控制。pubilc,protected,private
#include<iostream>
#include "string"
using namespace std;
//pubilc 类内外都可以访问
//protected 类内可以,类外不可以
//private 类内可以,类外不可以
//后两个在后边继承可以用到,保护可以继承,私有不能继承
class Person
{
public:
string name;
protected:
string car;
private:
int m_passward;
public:
void func()
{
name="张三";
car="拖拉机";
m_passward=123;
}
};
int main ()
{
Person p1;
p1.name="李四";
//p1.car 访问不到
//p1.m_passward
}
4.1.2struct 和class 的区别
唯一的区别是默认的访问权限不同
- struct默认权限为公有
- class默认权限为私有
#include<iostream>
#include "string"
using namespace std;
class c1
{
int a;//默认私有
};
struct c2
{
int a;//默认共有
};
int main()
{
// c1 c1;
// c1.a=10;
c2 c2;
c2.a=10;
}
4.1.4成员属性设置为私有
优点:
- 可以控制读写权限
- 对于写权限,可以检测数据有效性。
#include<iostream>
#include "string"
using namespace std;
//1.自己控制读写的权限
//2.对于写可以检测数据的有效性。
class person
{
public:
void setName(string name)
{
m_name =name;
}
string getName()
{
return m_name;
}
void setAge(int age)
{
if(age<0||age>150) { return; }
m_age=age;
}
private:
string m_name;
string m_age;
string lover;
};
int main (){
person p;
p.setName("张三");
cout<<"姓名为:"<<p.getName()<<endl;
}