第7章类的继承和多态机制


2012年2月27日星期一
13
1. 公有变量及方法的继承 还以上面的两个类为例,假设父类有一个方法getTask。 例7.2:将父类成员声明为public,验证子类的继承效果。 父类: public class Employee {//成员变量 int id; String name,phone,task; public String getTask()//公共成员方法 { return task; } }
public class Employee {//成员变量 int id; private String name,phone,task; private String getTask() { return task; } } //私有变量 //私有成员方法
编译时出现如“task has private access in Employee”之类的错误提示。
2012年2月27日星期一
20
public class Person1 { private String name; protected int age; public void setName(String na) { name=na; } public void setAge(int ag) { age=ag; } public String getName() { return name; } public int getAge() { return age; }
2012年2月27日星期一
6
7.1.2继承的语法 7.1.2继承的语法
在java语言中,子类对父类的继承是在类的声明语句中实现的 类声明语句如下: [类修饰符] class 类名 [extends 父类名] [implements [,接 口名] { //类体 } 其中,关键字extends说明了此处定义的类继承了父类指定的类中 的属性和行为。
}
2012年2月27日星期一
9
//成员变量
类的继承原则如下:
子类继承父类的成员变量,包括实例成员变量和类成 员变量。 子类继承父类除构造方法以外成员方法,包括实例成 员方法和类成员方法。 子类不能继承父类的构造方法,因为父类的构造方法 用来创建父类对象,子类需定义自己的构造方法,用 来创建子类自己的对象。 子类可以重新定义父类成员。
2012年2月27日星期一
22
public void print_s() { print_p(); System.out.println("Department:"+department); } public static void main(String arg[]) { Teacher1 t; t=new Teacher1("Wang",40,"Computer Science"); t.print_s(); t.setName("Wang Gang"); t.age=50; //直接访问父类中protected成员变量age,但不能访问 //直接访问父类中protected成员变量age,但不能访问 //其private成员变量name //其private成员变量name t.print_s(); } }
2012年2月27日星期一
17
子类同样能够访问到。这是因为此类变 量或方法可以被同一个包中的其他类所 访问,对于Employee类来说,同一个包 中的所有类当然也包括子类Manager。
2012年2月27日星期一
18
3. 私有成员的继承 例7.3:同样的子类和子类实例,只把父类Employee中的属性 即方法改为private修饰。
2012年2月27日星期一
3
类是一个层次结构, java要求每个类都 在 Java 中,类是一个层次结构, java要求每个类都 有父类,当没有显式继承父类时, 有父类,当没有显式继承父类时,父类隐含为 ng包中的object类 ng包中的object类。一个父类可以同时拥有多 包中的object 个子类, 个子类,此时这个父类实际上时所有子类的共有属性 即方法的集合,而每一个子类则是父类的特殊化, 即方法的集合,而每一个子类则是父类的特殊化,是 在公共属性的基础上的功能及属性的扩展和延伸。 在公共属性的基础上的功能及属性的扩展和延伸。 java不支持类的多重继承,只支持单继承, java不支持类的多重继承,只支持单继承,即每个子 不支持类的多重继承 类只能有一个直接父类,类的层次结构为树状结构, 类只能有一个直接父类,类的层次结构为树状结构, object类为树的根节点。 object类为树的根节点。 类为树的根节点
2012年2月27日星期一
4
特别要注意的是:通常根据应用定义自己的类层次,在定 义类的层次结构中,父类与子类的关系是一般与特殊的关系, 而不是整体与部分的关系,如图所示。
图7-2 错误的类层次结构图 图7-1 类层次结构图举例
2012年2月27日星期一
5
与多重继承(相应的类结构为网状结构)相比,单继承 比较简单,掌握、控制起来相对容易。Java虽然只支持单继承 ,但可通过接口来实现多继承功能。 采用继承的机制来组织、设计系统的类,可以提高程序 的抽象程度,使之更接近于人类的思维方式;采用继承还可以 使编写的程序结构清晰,节省了编程时间;同时因为代码的编 写量减少,也降低了程序维护的工作量。
2012年2月27日星期一
23
程序运行结果如下: 程序运行结果如下:
Name:Wang Age:40 Department:Computer Science Name:Wang Gang Age:50 Department:Computer Science
2012年2月27日星期一
21
public void print_p() { System.out.println("Name:"+name+" Age:"+age); } } public class Teacher1 extends Person1 { Protected String department; public Teacher(String na, int ag, String de) { setName(na); setAge(ag); department=de; }
2
7.1 类的继承
7.1.1继承的概念 7.1.1继承的概念
继承是由已有的类创建新类的机制, 继承是由已有的类创建新类的机制,是面向对象程序设计 的重要特征之一。一个新类可以从现有的类中派生, 的重要特征之一。一个新类可以从现有的类中派生,这个过程 称为类继承。派生出的新类称为已有类的子类, 称为类继承。派生出的新类称为已有类的子类,已有类称为父 类或超类。 类或超类。 继承性很好地解决了软件的可重用性问题。通过继承, 继承性很好地解决了软件的可重用性问题。通过继承, 子 类可以使用父类的属性和方法, 类可以使用父类的属性和方法,同时也可以修改父类的属性或 重载父类的方法,以及在父类的基础上添加新的属性和方法。 重载父类的方法,以及在父类的基础上添加新的属性和方法。 因此,父类和子类之间反映的是“一般与特殊”的关系。 因此,父类和子类之间反映的是“一般与特殊”的关系。
2012年2月27日星期一
19
分析编译出错的原因可知,因为Jerry类中建立了Manager类的实 例,而Manager类是继承自 Employee类,但由于Employee类中的属 性task、方法getTask()均为private类型,所以Manager类没有访问权限 。 事实上,对于私有成员,只有在定义私有成员的类自身中创建 该类的对象才能访问。私有成员的访问限制虽然较大,但对于类的 封装即模块化设计来说具有重要的意义。为了实现良好的封装性, 通常将类的成员变量声明为private,再通过public的方法来对这个变 量进行访问。 例如,上面Employee类中的方法该为public就是比较好的一种选择。
2012年2月27日星期一
10
子类继承父类时,父类的所有成员不一 定都可以被继承,也就是说,继承受一 些条件的限制,如父类成员前的访问控 制修饰符、子类与父类所在Байду номын сангаас的位置关 系等因素。
2012年2月27日星期一
11
访问控制修饰符主要在继承或包之间的成员访问时进行权 限的控制: 1、public公有访问控制符。该修饰符修饰的变量称为公有 成员,如果公有成员又在一个公有类中,那么这个成员将 能被所有的类访问。 2、缺省权限访问控制符。访问权限分2种情况:对于同一 包中父类的缺省权限成员具有访问权限,对其它包中父类 的缺省权限成员没有访问权限。
执行结果:Jerry的工作是:管理员工。
2012年2月27日星期一
16
2. 保护(protected)继承 保护( ) 如果把上例中的父类的属性和方法都用protected修饰,即:
public class Employee {//成员变量 int id; protected String name,phone,task; //保护类型变量 protected String getTask()//成员方法 { return task; } }
2012年2月27日星期一
8
父类:
public class Employee { int id; String name,phone,task; //方法略 } 子类: public class Manager extends Employee { String list; //成员变量 //方法略
2012年2月27日星期一
7
例7.1:设计人员类。 分 析 : 在 一 个 公 司 中 , 有 普 通 职 工 ( Employees) 和 管 理 者 ( Managers)两类人员。对这两类人员的属性和行为进行分析可知, 管理者是职工中特殊的一部分。可以将类的关系设计如下: 父类Employee可能有的属性包括: 员工号(id),姓名(name),地址(address), 电话(phone),职责(task)。 管理者(Manager)除具有以上所有属性外,还包括特殊的属性所 管理的职员(list),可以将Managers设计为子类。依据分析,可 设计如下两个类。
合集下载

第七章 面向对象的Java实现-继承和多态

第七章 面向对象的Java实现-继承和多态

Java教员
.NET教员
10
为什么需要继承 4-4
public class JavaTeacher2 extends Teacher { public JavaTeacher2(String myName, String mySchool) { super(myName, mySchool); 子类自动继承父类的属 } 性和方法,子类中不再 public void giveLesson(){ 存在重复代码 System.out.println("启动 Eclipse"); super.giveLesson(); } } public class DotNetTeacher2 extends Teacher { public DotNetTeacher2(String myName, String mySchool) { super(myName, mySchool); } public void giveLesson(){ System.out.println("启动 Visual Studio .NET"); super.giveLesson(); } } 使用继承,可以有效实现代码复用
4
本章目标
掌握继承 掌握super关键字 掌握多态
5
生活中的继承 2-1
生活中,继承的例子随处可见
动物 谁是父类? 谁是子类? 能说出继承的特点吗?
食草动物
食肉动物
继承需要符合的关系:is-a,父类更通用、子类更具体
6
生活中的继承 2-2
子类具有父类的一般特性(包括属性和行为), 以及自身特殊的特性
可以接收子类类型 public class HQ3 { public void judge(Teacher t){ t.introduction(); t.giveLesson(); 根据实际创建的对象 } 类型调用相应方法 大家好!我是北京中心的李明. 启动 Eclipse 知识点讲解 总结提问

C++ 第7章 继承2

C++ 第7章 继承2
例如下面的代码中,定义了一个派生类,该类 中包含有类对象成员:
class Vehicle {//...}; class Motor {//...}; class Car : public Vehicle { public: Motor motor; }; void vehicleFn(Vehiccle& v); void motorFn(Motor& m); void main( ) { Car c; vehicleFn(c); //ok motorFn(c); //error motorFn(c.motor); //ok }
23
7-1-4 类的分解及抽象类
声明一个函数是纯虚函数的语法,即让C++知 道该函数无定义,在Account类中示例如 下:
class Account { public: Account(unsigned accNo,float balan=0.0); int AccountNo(); float AcntBalan(); static Account * First(); Account* Next(); Static int NoAccounts(); void Display(); void Deposit{float amount}; virtual void Withdrawal(floa tamount)=0; //纯虚函数 protected: static Account* pFirst; Account* pNext(); static int count; unsigned acntNumber; float balance; };
24
7-1-4 类的分解和抽象类
一个抽象类不能有实例对象,即不能由该类抽象 来制造一个对象。所以,下面的声明是非法的:

封装、继承和多态的概念

封装、继承和多态的概念

封装、继承和多态的概念
封装、继承和多态是面向对象编程中的三个重要概念,下面分别进行详细解释:
一、封装
封装是指将对象的属性和方法封装在一起,形成一个独立的单元,对外部隐藏对象的实现细节,只暴露必要的接口供外部使用。

封装可以有效地保护对象的数据和行为,避免外部的误操作和非法访问,提高了代码的安全性和可维护性。

在面向对象编程中,封装是实现信息隐藏和数据保护的重要手段。

二、继承
继承是指一个类可以从另一个类中继承属性和方法,从而可以重用已有的代码和功能。

继承是面向对象编程中实现代码复用的重要手段,可以减少代码的重复性,提高代码的可读性和可维护性。

继承可以分为单继承和多继承两种方式,单继承是指一个类只能从一个父类中继承,而多继承是指一个类可以从多个父类中继承属性和方法。

三、多态
多态是指同一个方法在不同的对象上可以有不同的行为,即同一个方法可以有多
种不同的实现方式。

多态是面向对象编程中的重要概念,可以提高代码的灵活性和可扩展性。

多态可以分为编译时多态和运行时多态两种方式,编译时多态是指方法的重载,即同一个类中可以有多个同名但参数不同的方法;而运行时多态是指方法的重写,即子类可以重写父类的方法,从而实现不同的行为。

通过多态,可以实现面向对象编程中的“开闭原则”,即对扩展开放,对修改关闭。

类的继承与多态性实验报告

类的继承与多态性实验报告

类的继承与多态性实验报告目录1.介绍2.什么是多态3.多态在Java中的技术基础4.示例5.多态的好处6.总结介绍之前的文章介绍过类的封装性和继承性,现在是时候聊聊面向对象编程的三大特性之一的最后一个类的多态性了。

多态的基础是继承(包括了接口的实现)和方法的覆盖。

什么是多态多态对应的英文单词是polymorphism,百度翻译给出的翻译是:n.多型现象,多态性; 多机组合形式;按字面意思就是多种状态、形态、姿态等等,潜台词就是某个东西具有多种状态、形态、姿态等等。

那是什么东西呢?在面向对象的编程语言里面(当然就包括Java了)就是某个方法或函数。

那方法的多种状态、形态、姿态有是个什么意思呢?这其实是指同一个方法具有多个方法体,就是方法的实现。

而方法的相同与否是由方法签名决定的。

所以,多态其实本质上是指同一个类的同一个方法却具有不同的行为特征。

状态、形态、姿态指的就是行为特征。

多态在Java中的技术基础然而,在Java中,同一个类里面是不可能存在两个签名相同而实现不同的方法的,否则的话会导致无法判断该执行哪个方法,因此在编译时就会报错。

所以,肯定是在两个类中才有可能存在两个签名相同而实现不同的方法,一个实现在这个类,另一个实现在另一个类。

而如果这两个类毫无瓜葛,那么肯定就与多态的本质(同一个类的同一个方法却具有不同的行为特征)自相矛盾了。

所以,这两个类肯定是有某种联系的。

我们再想想,什么概念是能够让两个不同的类却又能称为同一个类的?答案就是类的继承/扩展,就是现实中的“某东西是某类东西”的概念,就是“具体和抽象”的思想。

比如,男人是人,女人也是人,男人类和女人类就借助于人类建立了某种联系,而人类具有的某个行为在男人类和女人类中是有着不同体现的,比如人类的吃饭这个行为,男人类的体现是狼吞虎咽,女人类的体现是细嚼慢咽。

例子不是很恰当,但意思就是这么个意思。

所以说,Java里面多态的技术基础就是方法的覆盖,当然,在Java中覆盖不仅仅发生在类的继承/扩展上,还可能发生在接口的实现上。

《java面向对象程序设计继承和多态》教案

《java面向对象程序设计继承和多态》教案

《Java面向对象程序设计-继承和多态》教案第一章:引言1.1 课程简介本课程旨在帮助学生掌握Java面向对象程序设计中的继承和多态概念。

通过学习,学生将能够理解继承和多态的原理,并能够运用它们解决实际编程问题。

1.2 课程目标理解继承的概念和原理掌握如何使用继承来实现代码复用理解多态的概念和原理掌握如何使用多态来实现动态绑定第二章:继承2.1 继承的概念介绍继承的定义和作用解释为什么使用继承2.2 继承的语法介绍如何使用extends关键字实现继承解释继承中的构造函数和继承关系2.3 继承的实现演示如何使用继承来复用代码解释继承的层次结构和菱形继承第三章:多态3.1 多态的概念介绍多态的定义和作用解释多态的好处3.2 方法重写解释方法重写的概念和规则演示如何使用方法重写来实现多态3.3 方法重载解释方法重载的概念和规则演示如何使用方法重载来提高代码可读性第四章:继承和多态的案例分析4.1 案例一:动物和鸟类使用继承和多态来定义动物和鸟类的关系实现动物和鸟类的属性和方法4.2 案例二:形状和圆形使用继承和多态来定义形状和圆形的关系实现形状和圆形的属性和方法第五章:总结和练习5.1 课程总结回顾继承和多态的概念和原理强调继承和多态在面向对象程序设计中的重要性5.2 练习题提供一些练习题,以帮助学生巩固所学知识第六章:继承和多态的深入理解6.1 继承的类型解释接口继承和类继承的区别讨论继承的优点和缺点6.2 多态的应用探讨多态在日常编程中的应用场景分析多态如何提高程序的可扩展性和灵活性第七章:Java中的继承和多态实例7.1 继承实例:汽车和摩托车通过实例展示如何使用继承来创建汽车和摩托车类演示如何通过继承来扩展属性和方法7.2 多态实例:支付接口和具体的支付方式创建一个支付接口和多个具体的支付方式类演示如何使用多态来实现不同的支付方法第八章:继承和多态的陷阱与最佳实践8.1 继承的陷阱讨论继承可能带来的过度耦合问题解释如何避免继承的陷阱8.2 多态的陷阱分析多态可能导致的类型不匹配问题探讨如何安全地使用多态8.3 最佳实践提供使用继承和多态的最佳实践指南强调代码可读性和可维护性第九章:继承和多态在设计模式中的应用9.1 设计模式简介介绍设计模式的概念和重要性解释设计模式与继承和多态的关系9.2 继承和多态在设计模式中的应用案例通过案例分析展示继承和多态如何在设计模式中发挥作用讨论设计模式如何提高程序设计的质量和可复用性第十章:课程回顾与拓展学习10.1 课程回顾总结本课程的重点内容和关键概念强调继承和多态在实际编程中的应用10.2 拓展学习资源提供一些拓展学习的资源和建议鼓励学生继续深入学习面向对象程序设计的其他方面第十一章:继承和多态的实际应用案例11.1 案例分析:图形库的设计通过分析图形库的设计,展示继承和多态如何用于实现复杂的图形操作。

Java程序设计教程第7章7.2 多 态

Java程序设计教程第7章7.2 多 态
mas参ter数.fe都ed是(pPenegt类uin的);子类
master.feed(xxx); ……
public void feed( XXX xxx ) { xxx.eat();
可否使用一个feed(Pet pet) 实现对所有宠物的喂食?
}
… … 频繁修改代码,代码可扩展性、可维护性差,
}
如何优化?
课堂操作——购置新车2-2
提前做完的同学可以尝试改进系统:
1. 循环从控制台选择汽车种类 2. 从控制台输入天数 3. 累加计算总租金
20/30
多态
总结
使用多态的好处
减少类中代码量 提高代码的可扩展性和可维护性
向上转型——子类转换为父类,自动进行类型转换
向下转型——父类转换为子类,结合instanceof运算符进行强 制类型转换
编写测试方法
调用主人类给狗狗喂的方法 调用主人类给企鹅喂的方法
为什么使用多态5-2
3/30
为什么使用多态5-3
问题
如果再领养XXX宠物,并需要给XXX喂食,怎么办?
添加XXX类,继承Pet类,实现吃食方法 修改Master类,添加给XXX喂食的方法
4/30
为什么使用多态5-4
主人类
练习
需求说明
使用多态实现喂养宠物功能 增加宠物猫并喂食,其健康值增加4
9/30
使用父类作为方法返回值实现多态
使用多态实现领养宠物
使用父类作为方法返回值 实现思路
在Master类添加领养方法getPet(String typeId ) 创建测试类,根据主人选择宠物类型编号来领养宠物
public class Master { public void feed( Dog dog ) { dog.eat(); } public void feed( Penguin pgn ) { pgn.eat(); }

类的继承

针对父类与子类中的同名方法
方法名称
各重载方法的名称必须完全相同
被继承与继承的方法名称必须完全相同
返回类型
各重载方法的返回值的类型必须完全相同
被继承与继承的方法的返回值的类型必须完全相同
参数类型
各重载方法的参数类型可以不同
被继承与继承方法的参数类型必须完全相同
参数数目
各重载方法的参数树木可以不同
被继承与继承的方法的参数数目必须完全相同
System.out.println("method fun in OverloadTest,param double");
}
publicvoidfun(inti){
System.out.println("method fun in OverloadTest,param int");
}
/**
*@paramargs
*/
publicstaticvoidmain(String[] args) {
//TODO自动生成方法存根
Car BMW =newCar();//实例化一辆宝马,呵呵
BMW.drive();
BMW.run();
BMW.speedup();
BMW.stop();
}
}
2.抽象类
有时,定义的类代表一个抽象的概念,就不能用它来实例化一个对象。例如,现实世界中食品这个概念,不可能有一个食品对象,可以见到的是一些诸如饼干、苹果、巧克力等具体对象。食品代表着一个抽象的概念:能吃的东西。
通常时候,类的成员变量设置为private,可以通过公共的存取方法来访问类成员变量的值。如下所示:
【例】
publicclassPoint {

继承与多态的教案

继承与多态的教案教案标题:继承与多态的教案教学目标:1. 理解继承和多态的概念;2. 能够使用继承创建一个类,并通过多态实现不同子类的特定功能;3. 能够解释继承和多态的优点和应用场景。

教学准备:1. 计算机编程语言教材和教具;2. 计算机编程软件;3. 示例代码和练习题。

教学过程:引入:1. 引导学生回顾之前学习的面向对象编程概念,如类、对象、封装和继承;2. 提问学生对继承和多态的理解,引发学生的思考。

讲解:1. 介绍继承的概念和作用,解释父类和子类之间的关系;2. 示例代码演示如何通过继承创建一个子类,并继承父类的属性和方法;3. 引导学生思考继承的优点和应用场景,如代码复用和扩展性。

练习:1. 分发练习题,要求学生根据给定的需求创建一个父类和两个子类,并实现特定功能;2. 学生在计算机编程软件上编写代码,运行并测试其结果;3. 学生互相交流并讨论各自的实现方法,分享经验和解决问题的思路。

讲解:1. 介绍多态的概念和作用,解释多态的实现方式;2. 示例代码演示如何使用多态实现不同子类的特定功能;3. 引导学生思考多态的优点和应用场景,如代码灵活性和可扩展性。

练习:1. 分发练习题,要求学生根据给定的需求创建一个父类和多个子类,并实现特定功能;2. 学生在计算机编程软件上编写代码,运行并测试其结果;3. 学生互相交流并讨论各自的实现方法,分享经验和解决问题的思路。

总结:1. 回顾继承和多态的概念和作用;2. 强调继承和多态的优点和应用场景;3. 鼓励学生继续深入学习面向对象编程的相关知识。

拓展活动:1. 鼓励学生在日常生活中观察和思考继承和多态的实际应用;2. 提供更多的编程练习和挑战,以提高学生对继承和多态的理解和应用能力。

评估方式:1. 观察学生在课堂上的参与和表现;2. 收集学生完成的练习题和代码,并进行评估;3. 针对学生的理解和应用能力,给予反馈和指导。

教学反思:1. 总结学生在课堂上的学习情况和反馈;2. 分析教学过程中的不足和改进之处;3. 调整教学策略和方法,以提高教学效果。

C#基础知识总结

C#一、第一章:了解.net framework01.什么是.net framework?由微软开发的软件开发平台。

framework的组件:公共语言运行时.net framework类库3.注释://单行注释/*多行注释*/ ///文档注释二、第二章:C#语法基础4.变量的定义格式:数据类型变量名=值;常量的定义格式:const 数据类型变量名=值;5.数据类型:byte short int long float double decimal char bool6.运算符:算术运算符:+ - * / % ++ --赋值运算符:= += -= *= /= %=逻辑运算符:&& || !关系运算符:== != ><<= >=条件运算符:表达式1?表达式2:表达式37.分支结构:单分支语句:If(条件){代码块}双分支语句:if(条件){代码块}else{代码块}多分支语句:if(条件){代码块}else if(条件){代码块}else{代码块}嵌套语句:if(条件){if(条件){代码块}else{代码块}else{代码块}switch分支语句格式:Switch(表达式){case 值1:代码块break;case 值2:代码块break;.......default:代码块break;}8.循环结构:while(条件){循环体}do{循环体}while(条件);for(初始化语句;条件语句;控制语句){循环体}foreach(数据类型变量名in 数组或集合){ }9.数组的初始化:数据类型[]数组名=new 数据类型[数组长度];数据类型[]数组名=new 数据类型[]{数据1,数据2,....};数据类型[]数组名={数据1,数据2,....};数据类型[]数组名=new 数据类型[数组长度]{数据1,数据2,....};10.枚举的定义:public enum 枚举名{成员1,成员2,......}11.枚举的使用:枚举名.成员或枚举名变量名=枚举名.成员12.创建对象:类名对象名= new 类名();13.数据类型转换:Int转string:int a =19;String str =a.ToString();Srting 转int:int i=int.Parse(console.ReadLine());三、第三章:类与对象的应用14.类与对象的关系:类是对象的模板,对象是类的具体表现。

c类的继承和多态例子

c类的继承和多态例子继承是面向对象编程中的重要概念之一,它允许一个类“继承”另一个类的属性和方法。

在C++中,继承分为三种类型:公有继承、私有继承和保护继承。

其中,公有继承是最常用的一种方式,也是实现多态的基础。

本文将通过一个例子来介绍C++中的公有继承和多态特性。

假设我们要设计一个动物园的系统,其中包含不同类型的动物。

首先,我们定义一个基类Animal,代表所有动物的共有属性和方法。

然后,派生出几个具体的动物类,如Lion(狮子)、Elephant (大象)和Monkey(猴子),它们都是Animal类的派生类。

1. 基类Animal的定义:```c++class Animal {public:Animal() {} // 构造函数virtual ~Animal() {} // 虚析构函数virtual void move() const = 0; // 纯虚函数,用于表示不同动物的移动方式protected:int age; // 年龄double weight; // 体重};```2. 派生类Lion的定义:```c++class Lion : public Animal {public:Lion(int a, double w) : Animal(), color("yellow") { age = a;weight = w;}void move() const {std::cout << "Lion is running." << std::endl;}private:std::string color; // 颜色};```3. 派生类Elephant的定义:```c++class Elephant : public Animal {public:Elephant(int a, double w) : Animal(), height(3.5) { age = a;weight = w;}void move() const {std::cout << "Elephant is walking." << std::endl; }private:double height; // 身高};```4. 派生类Monkey的定义:```c++class Monkey : public Animal {public:Monkey(int a, double w) : Animal(), num_bananas(5) {age = a;weight = w;}void move() const {std::cout << "Monkey is jumping." << std::endl;}private:int num_bananas; // 香蕉数目};```以上就是实现动物园系统的基本类定义。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档