C++面向对象的三大特性:封装、继承、多态;万事万物都可虚拟为对象,对象有其属性和行为;属性体现为数据,行为体现为函数
例如:猫作为液体...啊是对象,属性有品种、体重、年龄...,行为有跑、跳、喵喵喵...
具有相同性质的的对象,可以抽象为类,人属于人类,猫属于猫类,类就是用来构造对象的一个模板
封装的意义1:
封装类,将数据和函数写在一起,作为虚拟化的属性和行为,将属性和行为作为一个整体,表现事物
类封装语法:
class 类名{ 访问权限 : 属性/行为 };
Sample:
class Cat{ public: int age ,sex;//成员数据 int health; int damage; int doAttack(){//成员函数 return damage + health; } }; int main(){ Cat cat1;//使用Cat类作为模板实例化Cat1对象 cat1.doAttack();//访问语法:对象.要访问的成员名 }
封装的意义2:
将属性和行为用权限控制,将数据和函数写在不同的权限下面,加以控制
权限有三种:public、protected、private
public 类内可以访问 类外不可访问
protected 类内可以访问 类外不可以访问 子类对象不可以访问
private 类内可以访问 类外不可以访问 子类对象不可以访问
Caution:上述意味着保护和私有成员只能通过公共权限里的函数作为与类外交流的窗口
要是公共权限里没写函数作为接口,或者是作接口的函数没在公共权限里,那保护成员和私有成员就没有存在意义了(无法进行访问或交互的数据是死数据)
类权限语法:
class 类名{ public : 属性/行为; protected : 属性/行为; private : 属性/行为; };
Sample:
class Cat { public: int age, sex;//成员数据 int health; int damage; int doAttack() {//成员函数 return damage + health; } }; int main() { Cat cat1;//使用Cat类作为模板实例化Cat1对象 cat1.damage = 13; cat1.health = 24;//给成员数据赋值 cout<<cat1.doAttack();//访问语法:对象.要访问的成员名 }
类外访问语法:在main函数中或者其他函数中访问对象内的成员时,需要在成员名前加“ . ”符号(其实就是英文的句号);上面的案例中,main函数中访问cat1对象的doAttack成员函数,就要写成 cat1.doAtack(); 访问并修改cat1对象中成员数据,要写成 cat1.damage = 10; 但是在类内,比如说编写成员函数,成员函数体内就不需要这种特殊语法,直接写名称即可
illustration: 封面by 紺屋鴉江 作者:M1nor- https://www.bilibili.com/read/cv14221269 出处:bilibili