多态:重写 和 重载
// TODO 多态:重写(动态多态)和 重载(静态多态)
// Java语言默认支持多态
// C++默认关闭多态,需要通过 虚函数,在父类上给函数增加virtual关键字,开启多态
#include <iostream>
using namespace std;
// TODO 重写(动态多态)
// 父类
class BaseActivity {
public:
// 使用virtual关键字,开启多态
virtual void onStart() {
cout << "BaseActivity onStart" << endl;
}
};
// 子类
class MainActivity : public BaseActivity {
public:
// 重写父类 onStart()
void onStart() {
cout << "MainActivity onStart" << endl;
}
};
// 子类2
class HomeActivity : public BaseActivity {
public:
// 重写父类 onStart()
void onStart() {
cout << "HomeActivity onStart" << endl;
}
};
// 在此函数 体现多态,例如:你传入HomeActivity,我就帮你运行HomeActivity
void startToActivity(BaseActivity *baseActivity) {
baseActivity->onStart();
}
// TODO 重载(静态多态)
void add(int number1, int number2) {
cout << "add(int number1, int number2) = " << number1 + number2 << endl;
}
void add(float number1, float number2) {
cout << "add(float number1, float number2) = " << number1 + number2 << endl;
}
void add(double number1, double number2) {
cout << "add(double number1, double number2) = " << number1 + number2 << endl;
}
int main() {
// 重写(动态多态)
BaseActivity *mainActivity = new MainActivity();
BaseActivity *homeActivity = new HomeActivity();
startToActivity(mainActivity);
startToActivity(homeActivity);
cout << endl;
// 重载(静态多态)
add(1, 2);
add(1.4f, 2.9f);
add(1.33, 2.29);
// TODO 抛开 C++ 抛开Java 等等,请问什么是多态?
// 1.父类的引用指向之类的对象;
// 2.同一个方法有不同的实现
// 3.重写 和 重载
// TODO 什么是动态多态 和 静态多态?
// 1.重写(动态多态)和 重载(静态多态)
// 2.程序在运行期间,才能确定调用哪个类的函数 == 动态多态的范畴
// 3.编译期已经决定,调用哪个函数了,这个就属于静态多态的范畴
return 0;
}