繼承
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; 子類必須重寫,實現, 有純虛數的類,抽象類不能再 實例化了