c++类和继承

先说说 类

如果你正在写一个网络游戏 这个游戏里面有很多怪物是吧 新手要打的怪物有 鸡啊 狗啊 猪啊 鱼啊
网络游戏是要更新的 也许你游戏一刚出来 只能打鸡 然后玩家都练到满级了 你需要继续吸引玩家 砸门就引入新的怪物 狗啊 猪啊 鱼啊。。。。。

显然 面向对象的方法是 为每种怪物写个类 (class 鸡 ,class 狗 ,class猪,class 鱼)刷新生成怪物的时候就 创建对应的对象 删除对象 就是怪物死了。

然后你可能要问,为什么要用类啊?类是用来干什么的呢?我们来解释下:

首先这里有 三只鸡 分别叫 大鸡 中鸡 小鸡

我们发现 大鸡 中鸡 小鸡 有相同的属性啊 比如 身高 体重 年龄

大鸡 中鸡 小鸡 还有相同的动作啊 吃 睡

我们把这些相同的属性相同的动作 抽离出来 形成了类

class 鸡()

{

int 身高;

int 体重;

int 年龄;

void 吃()
{
//这里写鸡吃的时候做了什么
}
void 睡()
{
//这里写鸡睡的时候做了什么
}

}
  我们通过类 生成对象 然后对象因为彼此属性的不同被区分(因为大鸡比小鸡高 就是大鸡)

所以说 类 就是一些属性和动作的集合

对象使用类当作模板生成 然后赋予自己的属性 就成了对象

说说继承

砸门前面说过啊 要写个网络游戏 有这些类 class 鸡 ,class 狗 ,class猪,class 鱼

我们发现这些类 有共通之处啊 他们都是动物啊 属性都有年龄 身高 体重 动作都有 吃 睡

那我们可以偷懒只写一个类 class动物吗?

答案是不行啊兄弟 鸡会下蛋 狗可不会 鸡狗 虽然有身为动物的属性和动作 但是也有不同的属性和动作的

但是程序员会偷懒的(额 应该说 程序员遵循 "可复用原则" )尽量不要写 重复的代码 在鸡类里写 吃的动作 难道再在 狗 类里写一遍?不行 太麻烦

于是他们创造了 继承

现在有一个动物类

class 动物()
{
int 身高;
int 体重;
int 年龄;
void 吃()
{
//这里写吃要做的事
}
void 睡()
{
//这里写睡要做的事
}
}
  

然后我们用继承的方法写个class 鸡

class 鸡:动物
{
void 下蛋()
{
//这里写下蛋要做的事
}

}
 

class 鸡:动物 就是说 鸡继承自动物
然后 鸡就自动有了 动物的属性 和 动作 不用我们写了 这里还有访问修饰符这个东西 用来限制鸡类可以继承什么 不可以继承什么(如果你不想让鸡睡觉的话 就把睡觉动作设为私有) 这里我就不具体讲访问修饰符了 就是限制访问和继承的东西 去看看资料吧
这,就是继承

时间: 2024-10-08 11:13:01

c++类和继承的相关文章

lua-table类的继承

--男人类man = {name = "man",age=123}--继承空间man.__index=man--儿童类child= {}--继承setmetatable(child,man)print(child.age)yong= {}setmetatable(yong,man)child.age=12yong.age=16print("青年年龄:"..yong.age..",儿童团年龄:"..child.age)print(man.age)

类与继承(一)

在Java中,类文件是以.java为后缀的代码文件,在每个类文件中最多只允许出现一个public类,当有public类的时候,类文件的名称必须和public类的名称相同,若不存在public,则类文件的名称可以为任意的名称(当然以数字开头的名称是不允许的). 在类内部,对于成员变量,如果在定义的时候没有进行显示的赋值初始化,则Java会保证类的每个成员变量都得到恰当的初始化: 1)对于  char.short.byte.int.long.float.double等基本数据类型的变量来说会默认初始

python_way.day7 模块(configparser,xml,shutil,subprocess)、面向对象(上)(创建类,类的构成,函数式编程与面向对象编程的选择,类的继承)

python_way.day7 1.模块 configparser,xml,shutil,subprocess 2.面向对象(上) 创建类,类的构成,函数式编程与面向对象编程的选择,类的继承 1.模块 configparser 用于处理特定格式的文件,其本职上使用open来操作,只能是  [test1] 特定的格式 [test1] k1 = 123 k2 = True [test2] k1 = 123 k2 = v1 文件内容 1.获取 import configparser #打开文件找到文件

分类 类扩展 继承 协议 委托

分类 类扩展 继承 协议 委托 分类(Category) 不产生新类,不修改原类,但有自己的.h和.m文件 分类只能向原类中增加方法,或者重写原类的方法 声明的@property只会生成getter setter方法的声明 类.h中定义的方法必须实现,但分类.h中定义的方法,可以不实现 同名方法,分类的优先级高类别主要有3个作用:(1)将类的实现分散到多个不同文件或多个不同框架中.(2)创建对私有方法的前向引用.(类.h中未声明,但存在于.m中的私有方法,通过在分类.h中声明一下,就可以在其他类

java继承2——类与继承(转)

一.你了解类吗? 在Java中,类文件是以.java为后缀的代码文件,在每个类文件中最多只允许出现一个public类,当有public类的时候,类文件的名称必须和public类的名称相同,若不存在public,则类文件的名称可以为任意的名称(当然以数字开头的名称是不允许的). 在类内部,对于成员变量,如果在定义的时候没有进行显示的赋值初始化,则Java会保证类的每个成员变量都得到恰当的初始化: 1)对于  char.short.byte.int.long.float.double等基本数据类型的

模块的封装之C语言类的继承和派生

[交流][微知识]模块的封装(二):C语言的继承和派生 在模块的封装(一):C语言的封装中,我们介绍了如何使用C语言的结构体来实现一个类的封装,并通过掩码结构体的方式实 现了类成员的保护.这一部分,我们将 在此的基础上介绍C语言类的继承和派生.其实继承和派生是一个动作的两种不同角度的表达 .当我们继承了一个基类而创造了一个新类时,派生的概念就诞生了.派生当然是从基类派生的.派生出来的类当然是继承了基类的 东西.继承和派生不是一对好基友,他们根本就是一个动作的两种不同的说法,强调动作的起始点的时候

类的继承2以及泛型等

今天学习的东西好碎,突然想起来啦"碎碎念",真的有点晕啦,现在感觉知识掌握了理论性的知识,还没有学会怎么使用···突然发现实践是第一位的.今天首先学习了显示调用父类的构造方法,这个就是接着昨天还有一点没讲完吧,把类的继承中的构造方法的调用讲啦讲,并且也复习啦昨天学习的我们认为都很抽象的吧. <1>显示调用父类的构造方法     从上面我们可以看到定义的Chinese类继承了Person类,而在Program中我们使用了构造函数传参的方法 <2>  protect

python类的继承

Python 类的一些基本概念 Python中一切皆对象,声明变量函数等的过程实际上就是它们到内存中为对象分配的空间的连接.Python中的类同Java.C++一样,有自己的属性与方法.属于一个对象或类的变量被称为域. 域有两种类型--属于每个实例/类的对象或属于类本身,它们分别被称为实例变量和类变量. 类的变量 由一个类的所有对象(实例)共享使用.所有对象共用一个类变量的拷贝.对象的变量 由类的每个对象/实例拥有.因此每个对象有自己对这个域的一份拷贝. 类的方法与普通的函数只有一个特别的区别-

C++类的继承实例

首先由三个类分别为DateType(日期类).TimeType(时间类).DateTimeType(日期时间内).具体代码如下: #include <iostream> using namespace std; class DateType { int year,month,day; public: DateType(int year = 2000,int month = 12,int day = 1) { this->year = year; this->month = mont

JS原型继承和类式继承

类式继承(构造函数) JS中其实是没有类的概念的,所谓的类也是模拟出来的.特别是当我们是用new 关键字的时候,就使得"类"的概念就越像其他语言中的类了.类式继承是在函数对象内调用父类的构造函数,使得自身获得父类的方法和属性.call和apply方法为类式继承提供了支持.通过改变this的作用环境,使得子类本身具有父类的各种属性. JavaScript var father = function() { this.age = 52; this.say = function() { al