C++学习基础九——继承

1.不同于Java中通过extends实现继承,C++是通过:实现的。

2.C++中同样包含public,private,protected三个关键字:

public关键字表示在任意其他类中可调用该成员。

private关键字表示该成员只能在声明该成员的类中使用。

protected关键字用于继承,可在本类中调用声明为protected的成员,也可以在子类中通过子类对象调用,而不能通过父类对象调用。

3.virtual关键字表示该函数可以被子类继承并重写。

如果父类的成员函数声明为virtual,则子类可以重新定义该成员函数,重新定义时去掉virtual关键字。

如果父类的成员函数是普通的函数,则子类继承之后不能重新定义该函数。

4.代码片段如下:

 1 #include <iostream>
 2 #include <string>
 3
 4 using namespace std;
 5
 6 class Item_base
 7 {
 8 public:
 9     Item_base(const string &is,double p):isbn(is),price(p){}
10     string book()
11     {
12         return isbn;
13     }
14     virtual double calMoney(int c)
15     {
16         return c * price;
17     }
18 private:
19     string isbn;
20 protected:
21     double price;
22 };
23
24 class Bulk_item : public Item_base
25 {
26 public:
27     Bulk_item::Bulk_item(const string &is,double p,int c,double dis):
28         Item_base(is,p),min_py(c),discocunt(dis){}
29     double calMoney(int c)
30     {
31         cout<<endl<<"子类"<<endl;
32         if(c > min_py)
33         {
34             return c * price * discocunt;
35         }
36         else
37         {
38             return c * price;
39         }
40     }
41     void test()
42     {
43         cout<<endl<<"子类测试!!"<<endl;
44     }
45 private:
46     int min_py;
47     double discocunt;
48 };
49
50
51
52 int main()
53 {
54     string itemIsbn = "x-123-1234-x";
55     Item_base item(itemIsbn,10.0);
56     cout<<item.calMoney(100)<<endl;
57
58     Bulk_item item2("123-456-x",10.0,30,0.8);
59     cout<<item2.calMoney(100)<<endl;
60     item2.test();
61
62     Item_base *item3 = new Bulk_item("123-456-789-x",10.0,10,0.8);
63     cout<<item3->calMoney(20)<<endl;
64     //不能调用子类的test方法
65     return 0;
66 }

后续更新中....

时间: 2024-10-24 22:28:32

C++学习基础九——继承的相关文章

Python基础学习(九)

Python 多线程 多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度 程序的运行速度可能加快 在一些等待的任务实现上如用户输入.文件读写和网络收发数据等,线程就比较有用了.在这种情况下我们可以释放一些珍贵的资源如内存占用等等. 线程在执行过程中与进程还是有区别的.每个独立的线程有一个程序运行的入口.顺序执行序列和程序的出口.

java基础知识回顾之java Thread类学习(九)--wait和notify区别

wait和sleep区别:  相同点:调用wait,sleep方法都可以是线程进入阻塞状态,让出cpu的执行权. 不同点:1.sleep必须指定时间,但是wait方法可以指定时间,也可以不指定时间. 2.wait方法必须在同步中使用,但是sleep不一定在同步中使用. 3.在同步中,调用sleep方法释放CPU执行权,但是不会释放锁,即使让出了CPU执行权,其它线程也无法进入同步锁,不能得到执行.但是wait  方法不仅释放CPU执行权,而且释放同步锁,进入阻塞状态.也就是说其它等待此锁的线程可

前端学习(九):CSS基础

进击のpython 前端学习--CSS基础 CSS的样式可以写在哪呢?其实CSS的样式插入式十分灵活的 按照插入的形势来看,可以分为三种情况 而接下来就对这三种情况进行简单的讨论 内嵌式 CSS样式表是可以直接把代码放在现有的标签里面去的 这种方法就称为内嵌式: <p style='color:red;'>文字颜色为红色</p> 把对应的style属性,写在p标签的开始标签中 CSS样式代码要写在style=""双引号中,如果有多条CSS样式代码设置可以写在一起

新手必看,Linux学习基础

Linux学习基础 1.什么是Linux? 准确的说,是指Linux的kernel(系统的核心程序),其内核版权属于Linus Torvalds,在GPL(GNU General Public License)版权协议下发行, 任何人都可以自由的复制(copy), 修改(change), 套装分发(distribute),销售,但是不可以在分发时加入任何限制, 而且所有原码必须是公开的,所以任何人都可以无偿取得所有执行文件和原代码. 对于Linux用户和系统管理员来说,Linux是指包含Linu

Django基础九之中间件

目录 Django基础九之中间件 一 前戏 二 中间件介绍 三 自定义中间件 自定义一个中间件示例 process_request process_response process_view process_exception process_template_response(用的比较少) 四 中间件执行流程 五 中间件版登陆认证 六 中间件案例 应用案例 1.做IP访问频率限制 2.URL访问过滤 源码试读 Django基础九之中间件 本节目录 一 前戏 我们在前面的课程中已经学会了给视图函

李新海:培训师必会的成年人学习的九大心理

培训课程,根据年龄分类,以18岁为临界点,18岁以下的培训,属于文化课培训,有通用类课程和应试类课程. 通用类课程,主要是讲国学,礼仪,思维相关课程. 应试类课程,主要是讲英语,语文,数学,化学,物理等考试的学科课程. 而我们培训师思维中讲的培训基本功之心理,是针对18岁以上的培训,因为18岁,意味着是成年人,更多的是在大学生和职场工作的人. 要想给他们讲好课程,必须要懂得成年人学习的心理,怎么样的课程,他们是喜欢的,怎么样上课,相对而言会更有效果. 在这里,李老师分享,成年人学习的九个心理 温

Java学习笔记之继承

一.继承的基础 在Java术语中,被继承的类叫超类(superclass),继承超类的类叫子类(subclass). 举例说明: 1 class Box 2 { 3 public double width; 4 public double height; 5 public double depth; 6 7 //重载构造方法 8 public Box(Box ob) 9 { 10 width = ob.width; 11 height = ob.height; 12 depth = ob.dep

Java基础九--抽象类

Java基础九--抽象类 一.抽象类介绍 /*抽象类:抽象:笼统,模糊,看不懂!不具体. 特点:1,方法只有声明没有实现时,该方法就是抽象方法,需要被abstract修饰. 抽象方法必须定义在抽象类中.该类必须也被abstract修饰.2,抽象类不可以被实例化.为什么?因为调用抽象方法没意义.3,抽象类必须有其子类覆盖了所有的抽象方法后,该子类才可以实例化. 否则,这个子类还是抽象类. 1,抽象类中有构造函数吗? 有,用于给子类对象进行初始化. 2,抽象类可以不定义抽象方法吗? 可以的. 但是很

C++语言学习(九)——多态

C++语言学习(九)--多态 C++中所谓的多态(polymorphism)是指由继承而产生的相关的不同的类,其对象对同一消息会作出不同的响应.    多态性是面向对象程序设计的一个重要特征,能增加程序的灵活性.可以减轻系统升级,维护,调试的工作量和复杂度. 多态是一种不同层次分类下的重要联系,是一种跨层操作. 一.多态实现的前提 赋值兼容规则是指在需要基类对象的任何地方都可以使用公有派生类的对象来替代.赋值兼容是一种默认行为,不需要任何的显式的转化步骤,只能发生在public继承方式中,是多态