学习目标
学习类得封装和访问控制,很有必要!
学习内容
封装和访问控制
封装(隐藏对象的属性和实现细节,仅对外部提供公共的访问方式)即将数据和方法封装在一起,数据被保护在内部,避免外部修改数据,通常使用private进行封装,即加入了权限限制,封装
访问控制:
private(私有)
public(公共)
protected(受保护,相似于private,但子类可以访问父类)
学习代码
💖main.cpp
#include <iostream>
#include "student.h"
using namespace std;
int main() {
Student s1;
/*s1.m_name = "nihaos";
s1.m_age = 20;
s1.m_number = 1002;*/
//上面访问不了因为在类声明中进行了访问控制,加入了private,故不能访问
//采用方法进行访问,即函数访问
s1.setname("nihao");
s1.setage(20);
s1.setnumber(1001);
cout << s1.getname() << '\t' << s1.getage() << '\t' << s1.getnumber() << endl;
//采用此方法还可以对输入的数值进行判断,防止输入错误字符或数字
return 0;
}
💖student.cpp
#include<iostream>
#include"student.h"
using namespace std;
void Student::eat() {
cout << "学生吃饭了" << endl;
}
void Student::sleep() {
cout << "学生睡觉了" << endl;
}
void Student::study() {
cout << "学生学习了" << endl;
}
void Student::setname(string name)
{
m_name = name;
}
string Student::getname()
{
return m_name;
}
void Student::setage(int age)
{
m_age = age;
}
int Student::getage()
{
return m_age;
}
void Student::setnumber(int number)
{
m_number = number;
}
int Student::getnumber()
{
return m_number;
}
💖student.h
#pragma once
#include <iostream>
#include<string>
using namespace std;
class Student
{
private://私有权限控制 ,仅类内可以访问,子类不允许访问父类
string m_name;
int m_age;
int m_number;
public://公共权限控制
void eat();
void sleep();
void study();
void setname(string name);
string getname();
void setage(int age);
int getage();
void setnumber(int number);
int getnumber();
protected://受保护的控制权限,子类可以访问父类
};