一、C++的三大特性
1 封装
封装
封装的意义
封装是C++面向对象的三大特征之一
封装的意义:
将属性和行为作为一个整体,表现生活中的事物
类中的属性和行为,我们统称为成员
属性-成员属性-成员变量
行为-成员函数-成员方法
封装的意义二
类在设计时,可以把属性和行为放在不同的权限下,加以控制
访问权限有三种
public——公共权限——成员类内可以访问,类外可以访问
protected–保护权限——成员类内可以访问,类外不可以访问
private——私有权限——成员类内可以访问,类外不可以访问
2 继承
2.1 概念
继承
继承是面向对象三大特性之一
子类可以继承或拥有父类的所有内容
普通实现:
#include<iostream>
#include<string>
using namespace std;
//普通实现页面
//java页面
class Java
{
public:
void header()
{
cout << "首页、登录注册" << endl;
}
void footer()
{
cout << "帮助中心、交流合作" << endl;
}
void left()
{
cout << "java、python、c++" << endl;
}
void contenet()
{
cout << "java学科视频" << endl;
}
};
class Python
{
public:
void header()
{
cout << "首页、登录注册" << endl;
}
void footer()
{
cout << "帮助中心、交流合作" << endl;
}
void left()
{
cout << "java、python、c++" << endl;
}
void contenet()
{
cout << "python学科视频" << endl;
}
};
class Cpp
{
public:
void header()
{
cout << "首页、登录注册" << endl;
}
void footer()
{
cout << "帮助中心、交流合作" << endl;
}
void left()
{
cout << "java、python、c++" << endl;
}
void contenet()
{
cout << "c++学科视频" << endl;
}
};
void test()
{
cout << "java" << endl;
Java java;
java.header();
java.footer();
java.left();
java.contenet();
cout << endl;
cout << "python" << endl;
Python python;
python.header();
python.footer();
python.left();
python.contenet();
cout << endl;
cout << "cpp" << endl;
Cpp cpp;
cpp.header();
cpp.footer();
cpp.left();
cpp.contenet();
}
int main(void)
{
test();
system("pause");
return 0;
}
继承方法实现
#include<iostream>
#include<string>
using namespace std;
//公共页面
class BasePage
{
public:
void header()
{
cout << "首页、登录注册" << endl;
}
void footer()
{
cout << "帮助中心、交流合作" << endl;
}
void left()
{
cout << "java、python、c++" << endl;
}
};
//普通实现页面
//java页面
class Java : public BasePage
{
public:
void contenet()
{
cout << "java学科视频" << endl;
}
};
class Python : public BasePage
{
public:
void contenet()
{
cout << "python学科视频" << endl;
}
};
class Cpp : public BasePage
{
public:
void contenet()
{
cout << "c++学科视频" << endl;
}
};
void test()
{
cout << "java" << endl;
Java java;
java.header();
java.footer();
java.left();
java.contenet();
cout << endl;
cout << "python" << endl;
Python python;
python.header();
python.footer();
python.left();
python.contenet();
cout << endl;
cout << "cpp" << endl;
Cpp cpp;
cpp.header();
cpp.footer();
cpp.left();
cpp.contenet();
}
int main(void)
{
test();
system("pause");
return 0;
}
总结:
继承的好处:减少重复代码
语法:class 子类:继承方式 父类
子类也称派生类
父类也称基类
派生类中的成员,包含量大部分
一类是从基类继承过来的,一类是自己增加的成员。
从基类继承过来的表现其共性,而新增加的成员体现其个性。
继承方式
继承的语法——class 子类 :继承方式 父类
3 多态
3.1 多态的概念
多带的概念主要是:通俗的说就是,多种形态。具体的说就是当不同的对象去完成时,会产生不同的状态效果。
例如:买火车票这个行为,当普通人买票时,是全价买票;当学生买票时,是半价买票,当是军人等时,是优先买票。
3.2 多态的定义及实现
3.2.1 重写/覆盖 的要求
重写或覆盖:是返回值、函数名、参数列表完全相同。
子类中有一个跟父类完全相同的虚函数,子类的虚函数重写了基类的虚函数
注意:重载:重载是函数名相同,而参数列表不同为重载。包括参数的类型、参数的个数和参数的顺序,只要有一个不同就叫做参数列表不同。不能以返回值不同为重载。
3.2.2 多态的两个要求
1.被调用的函数必须是虚函数,子类对父类的虚函数进行重写 (重写:三同(函数名/参数/返回值)+虚函数)
2、父类指针或者引用去调用虚函数。
注释:
虚函数