继承
1.继承中 各个权限的继承情况
class Person
{
public:
int a;
protected:
int b;
private: 私有的变量不能被继承
int c; };
class Student:public Person 公有继承 那么变量都会保持不变
{
public:
int a;
protected:
int b; };
class Teacher:protected Person 保护继承 那么变量都会变保护的
{
protected:
int a;
protected:
int b; };
class Student2 :private Person
{
private:
int a;
private:
int b;
};
2.继承的构造方法
1.子类首先会默认调用父类的默认构造方法,如果没有报错, 如果是有参的,需要自己初始化列表调用 父类有参数的构造
2.构造先是父类,析构后是父类 3.不会继承父类的 构造 和 析构函数
class Person
{
public:
Person(int n)
{ }
};
class Student:public Person
{
Student(int m) :Person(m)
{
}}
3.父类 子类 方法调用
1.如果重名, 会隐藏父类所有重名方法,而调用不到 2.若果想调用加 作用域
class Person
{
public:
void test()
{}};
class Student:public Person
{
public:
void test()
{}
};
int main()
{
Student s;
s.test();
s.Person::test();
return 0;
}
3.重名的静态方法的调用
class Person
{
public:
static void test()
{}
};
class Student:public Person
{
public:
static void test()
{}
};
int main()
{
Student::Person::test();
return 0;
}
多继承
class A :public B1 ,public B2 {}
多态
Animal* animal = new Cat;
存虚函数 virtual int get() = 0; 子类必须重写,实现, 有纯虚数的类,抽象类不能再 实例化了