黑马程序员——C++继承

继承是为了减少重复代码,继承基本语法class 子类 :继承方式 父类
子类和父类又分别叫做派生类和基类
父类子类的构造和析构函数顺序:先进后出,先父后子,白发人送黑发人

class java :public base

子类和父类:
同名成员属性,输出的是子类的成员属性,如果要输出父类成员属性,那就要用作用域:cout << s.base::m_A << endl;
**同类成员属性,**同理s.base::fun();,如果子类出现和父类同名的成员函数,那么子类会把父类同名函数全部隐藏,想访问父类就必须加作用域

静态成员属性:类内声明,类外初始化,访问父类的成员属性,通过对象访问s.base::m_A,也可以通过类名访问son::base::m_A
同名静态成员属性和上面一样,需要加作用域访问父类成员属性

class base {
public:
	static int m_A ;
};
int base::m_A = 100;
class base {
public:
	static int m_A ;
};
int base::m_A = 100;

class son :public base {
public :
	static int m_A ;
};
int son::m_A = 200;
void test01() {
	son s;
	cout << s.base::m_A << endl;
}
int main() {
	test01();
	system("pause");
	return 0;
}

静态成员函数,同上,都是需要作用域。

继承方式由:公共继承、保护继承、私有继承
在这里插入图片描述
父类中的私有权限成员,子类中无法访问
虽然无法访问,但是都被继承了,只不过被隐藏了

利用开发人员命令提示工具


#include <iostream>
using namespace std;
#include <string>


//普通实现
//class java {
//public:
//	void header() {
//		cout << "首页" << endl;
//	}
//	void footer() {
//		cout << "底部" << endl;
//	}
//	void left() {
//		cout << "左侧" << endl;
//	}
//	void content(){
//		cout << "内容" << endl;
//	}
//};
//class python {
//public:
//	void header() {
//		cout << "首页" << endl;
//	}
//	void footer() {
//		cout << "底部" << endl;
//	}
//	void left() {
//		cout << "左侧" << endl;
//	}
//	void content() {
//		cout << "内容" << endl;
//	}
//};
//class C {
//public:
//	void header() {
//		cout << "首页" << endl;
//	}
//	void footer() {
//		cout << "底部" << endl;
//	}
//	void left() {
//		cout << "左侧" << endl;
//	}
//	void content() {
//		cout << "内容" << endl;
//	}
//};
//void test01() {
//	java a;
//	cout << "--------------------" << endl;
//	a.header();
//	a.footer();
//	a.left();
//	a.content();
//	python b;
//	cout << "--------------------" << endl;
//	b.header();
//	b.footer();
//	b.left();
//	b.content();
//}

//继承操作
class base {//公共部分,减少重复代码
public:
		void header() {
			cout << "首页" << endl;
		}
		void footer() {
			cout << "底部" << endl;
		}
		void left() {
			cout << "左侧" << endl;
		}
};
class java :public base {//   class 子类:继承方式 父类
public:
	void content() {
		cout << "JAVA课程" << endl;
	}
};
class python :public base {
public:
	void content() {
		cout << "python课程" << endl;
	}
};
class CPP :public base {
public:
	void content() {
		cout << "C++课程" << endl;
	}
};
void test01() {
	java a;
	cout << "--------------------" << endl;
	a.header();
	a.footer();
	a.left();
	a.content();
	python b;
	cout << "--------------------" << endl;
	b.header();
	b.footer();
	b.left();
	b.content();
}
int main() {
	test01();
	system("pause");
	return 0;
}

版权声明:本文为weixin_44730078原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。