C++之继承与派生

一、继承的特点:
 
     1、子类拥有父类的属性和方法
 
     2、子类可以有自己新的属性和方法
 
     3、子类可以重写(覆盖)父类的方法
 
     4、可以声明父类,创建子类
 
        (1)声明的什么类型,就只能调用本类型的属性和方法
 
        (2)创建的什么类型,运行什么类型的方法
 
        (3)创建的什么类型,就可以强转为什么类型 

二、  THIS 与 SUPER 关键字
 
     其实this 与super 很简单,this 表示调用自己声明的属性和方法,super表示调用父类声明的属性和方法。
 
三、继承中的构造方法
 
     1、创建对象一定会调用构造方法
 
    2、创建子类对象一定会调用父类的构造方法
 
    3、子类默认调用父类无参构造方法
 
    4、子类只能调用父类存在的构造方法
 
    5、子类构造方法中使用super 调用父类构造方法,并且super 必须放在第一行
 
    6、构造方法中this 表示调用本类其他构造方法,并且this 必须放在第一行 
四、多重继承
    
    class D:public A,private B,protected C
             {   类D新增加的成员}
    1、多继承引起的二义性问题
             B、C两个类中含有相同的函数a(),当类D d,d.a();调用时,就不知调用哪个,这里用作用域符号“::”解           决这个问题,d.B::a() 或者d.A::a()
    2、多继承引起派生类的多次继承——解决办法:定义为虚基类
             类D继承了类A两次,分别通过类B和类C。把类A声明成虚基类,类D就继承了类A一次。
        一般形式:class 派生类名:virtual 继承方式 基类名
五、基类和派生类的转换
    既然数据类型之间可以类型转换,那基类和派生类之间也可以转换
    1、派生类对象可以向基类对象赋值
          可以用子类对象对基类对象赋值,如
              A a1;           //定义基类A对象a1
              B b1;          //定义类A的公用派生类B的对象b1
              a1=b1;       //用派生类B对象b1对基类对象a1赋值

    2、派生类对象可以替代基类对象向基类对象的引用进行赋值或初始化
          如:
              A a1;                    //定义基类A对象a1
              B b1;                    //定义公用派生类B对象b1
              A&r=a1;             //定义基类A对象的引用r,并用a1对其初始化
    3、如果函数的参数是基类对象或基类对象的引用,相应的实参可以用子类对象
    4、派生类对象的地址可以赋给指向基类对象的指针变量,也就是说,指向基类对象的指针变量也可以指向派生类             对象。
六、装饰模式中的继承
服饰类
class Finery : Person
    {
        protected Person component;
        public void Decorate(Person component)
        {
            this.component = component;
        }
        public override void Show()
        {
            if (component != null)
            {
                component.Show();
            }
        }
    }
T恤类
    class TShirts : Finery
    {
        public override void Show()
        {
            Console.Write("大T恤");
            base.Show();
        }
    }
垮裤类
    class BigTrouser : Finery
    {
        public override void Show()
        {
            Console.Write("垮裤");
            base.Show();
        }
    }
}  
    垮裤类和T恤类都继承了服饰类,垮裤类和T恤类都拥有Decorate()方法,两个类都拥有的了此类但是其两个方法是完全没有关系的里边的内容也是没有关系的,继承减少了代码量,使代码更加简单。










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
好的,我可以为您介绍一下 C++继承派生的相关知识,并且给您一个定义 Employee 类的示例代码。 在 C++ 中,继承是一种重要的面向对象编程技术,它允许我们在一个类的基础上定义另一个类。被继承的类称为基类或父类,继承的类称为派生类或子类。派生类可以继承父类的成员变量和成员函数,并且还可以添加自己的成员变量和成员函数。 下面是一个定义 Employee 类的示例代码: ```c++ // Employee 类的定义 class Employee { public: Employee(string name, int age, string gender, double salary); virtual ~Employee(); virtual void display() const; protected: string name_; int age_; string gender_; double salary_; }; // Manager 类的定义,它是 Employee 类的派生类 class Manager : public Employee { public: Manager(string name, int age, string gender, double salary, string department); virtual ~Manager(); virtual void display() const; private: string department_; }; ``` 在上面的代码中,Employee 类包含了一些基本的成员变量和成员函数,如姓名、年龄、性别和薪水,以及一个虚函数 display()。Manager 类是 Employee 类的派生类,它继承了 Employee 类的所有成员变量和成员函数,并且添加了一个部门名称的成员变量 department_ 和一个重载了 display() 函数的成员函数。 请注意,Employee 类的析构函数和 display() 函数都是虚函数,这是因为我们希望在派生类中重载这些函数时能够正确地调用它们。 以上是一个简单的继承派生示例,希望能够帮助您更好地了解 C++ 中的面向对象编程技术。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值