多态练习题
java复习中南
第四章。
• 如果变量a中有一个值,变量b中有一个值,如何将两个变量 中的值互换? 1、运用临时变量 temp = a; a = b; b = temp; 2、不用临时变量(加减运算) a = a + b; b = a - b; a = a - b; 关于你们老师问的能不能用乘除运算,我觉得不可以,我猜因 为分母为零呵呵,,不知道是不是?
obj1.fn=31 obj1.fk=40 obj2.fn=32 obj2.fk=40
第六章
1、继承(extends) 这个讲继承ppt实在是乱七八糟,找书看吧,看不下去 了。。。T-T 2、多态 动态多态:重写或覆盖(Override),通过继承,子类覆盖 父类中的方法【一般重写的是函数】***要求子类的成员 函数与父类的函数名称相同,参数列表相同,返回类型相 同*** 静态多态:重载(Overload)(重载的作用就是让程序员少 记一些函数的名字),在同一个类中,【我们学的也是函 数的重载】***函数名字相同,必须满足下列条件之一:1、 参数个数不同 2、参数个数相同,类型不同 3、参数个 数相同,类型相同,但是在参数列表中出现的顺序不同。 特别注意:返回类型不同不能作为判断的依据。***
练习题:
1. 下列( B )是不能通过编译的语句。
A.double d = 545.0; C.int i = 321; int a = 10; B.char a1 = “c”;
char a1 = 'c'
D.float f1 =45.0f;
2.执行下列程序代码的输出结果是( 10,11,11 )。
int i, j;
AB
3.下列关于构造方法的叙述中,错误的是
( D )。?????????? A.构造方法名与类名必须相同 B.构造方法没有返回值,且不用void声明 C.构造方法只能通过new自动调用 D.构造方法不可以重载,但可以继承
java 接口的练习题
java 接口的练习题Java接口的练习题在Java编程语言中,接口(Interface)是一种特殊的引用类型,它可以理解为一种约定或契约,用于规定类所需要实现的方法。
在本篇文章中,我们将通过一些练习题来巩固和提升对Java接口的理解和运用。
练习一:接口的基本使用请定义一个名为Shape的接口,该接口中应包含计算面积的方法和计算周长的方法。
具体要求如下:```javapublic interface Shape {double getArea();double getPerimeter();}```接下来,请创建一个名为Rectangle的类,该类实现Shape接口,并且包含长度和宽度两个属性,并分别实现计算面积和计算周长的方法。
具体要求如下:```javapublic class Rectangle implements Shape {private double length;private double width;public Rectangle(double length, double width) {this.length = length;this.width = width;}@Overridepublic double getArea() {return length * width;}@Overridepublic double getPerimeter() {return 2 * (length + width);}}```最后,请编写一个测试类,验证Rectangle类的功能是否正确。
具体要求如下:```javapublic class TestShape {public static void main(String[] args) {Rectangle rectangle = new Rectangle(5, 4);System.out.println("矩形的面积:" + rectangle.getArea());System.out.println("矩形的周长:" + rectangle.getPerimeter());}}```运行上述测试类,输出的结果应为:```矩形的面积:20.0矩形的周长:18.0```练习二:接口的多态性请在Shape接口中增加一个方法用于打印形状的信息,并在Rectangle类中对该方法进行实现。
多做练习题
多做练习题一、基础概念理解2. 简述面向对象编程中的封装、继承、多态的概念。
4. 请说明什么是事件驱动编程以及其应用场景。
5. 简述数据库中的SQL语言的作用及其基本命令。
二、数据结构与算法1. 请列举常用的线性数据结构。
2. 描述二叉树的特点及其常见操作。
3. 简述排序算法的类别,并给出冒泡排序和快速排序的基本思想。
4. 请解释什么是哈希表,并说明其查找和插入的时间复杂度。
5. 描述图的表示方法以及图的遍历算法。
三、编程语言特性1. 请列举Python中的几种基本数据类型。
2. 简述Java中的泛型以及其作用。
3. 描述C++中的指针与引用的区别。
4. 请说明JavaScript中闭包的概念及其应用。
5. 简述TypeScript中的类型注解和类型推断。
四、软件工程1. 请解释软件开发生命周期模型。
2. 简述敏捷开发的核心价值观和原则。
3. 描述单元测试、集成测试和系统测试的区别。
4. 请说明版本控制系统的作用以及Git的基本操作。
5. 简述软件架构设计的基本原则。
五、网络与通信1. 请解释TCP/IP协议栈的层次结构。
2. 描述HTTP协议的工作原理及其常见方法。
3. 简述RESTful API的设计原则。
4. 请说明Websocket协议的特点及其应用场景。
5. 描述网络安全的常见威胁及其防范措施。
六、数据库技术1. 请列举关系型数据库的常见类型。
2. 简述数据库范式及其作用。
3. 描述索引的作用及其类型。
4. 请说明事务处理的基本概念及其特性。
5. 简述数据库的备份与恢复策略。
七、操作系统1. 请解释进程与线程的区别。
2. 描述内存管理的基本策略。
3. 简述文件系统的常见类型及其特点。
4. 请说明操作系统的调度算法。
5. 描述操作系统的安全机制。
1. 请解释机器学习的基本概念及其分类。
2. 描述深度学习的基本原理。
3. 简述自然语言处理的基本任务。
4. 请说明计算机视觉的主要应用领域。
5. 描述强化学习的基本思想。
c++多态性与虚函数习题
作业题一、写出下列程序运行结果1.#include<iostream>using namespace std;class A {public:virtual void func( ) {cout<<”func in class A”<<endl;} };class B{public:virtual void func( ) {cout<<”func in class B”<<endl;} };class C:public A,public B{public:void func( ) {cout<<”func in class C”<<endl:}};int main( ){C c;A& pa=c;B& pb=c;C& pc=c;pa.func( );pb.func( );pc.func( );}2.#include<iostream>using namespace std;class A{public:virtual ~A( ){cout<<”A::~A( ) called “<<endl; }};class B:public A{char *buf;public:B(int i) { buf=new char[i]; }virtual ~B( ){delete []buf;cout<<”B::~B( ) called”<<endl;}};void fun(A *a) {delete a;}int main( ){ A *a=new B(10);fun(a);}二、程序设计题1有一个交通工具类vehicle,将它作为基类派生小车类car、卡车类truck和轮船类boat,定义这些类并定义一个虚函数用来显示各类信息。
5.2定义一个shape抽象类,派生出Rectangle类和Circle类,计算各派生类对象的面积Area( )。
c++多态性与虚函数习题答案
多态性与虚函数1.概念填空题1.1 C++支持两种多态性,分别是编译时和运行时。
1.2在编译时就确定的函数调用称为静态联编,它通过使用函数重载,模板等实现。
1.3在运行时才确定的函数调用称为动态联编,它通过虚函数来实现。
1.4虚函数的声明方法是在函数原型前加上关键字virtual。
在基类中含有虚函数,在派生类中的函数没有显式写出virtual关键字,系统依据以下规则判断派生类的这个函数是否是虚函数:该函数是否和基类的虚函数同名;是否与基类的虚函数参数个数相同、类型;是否与基类的虚函数相同返回类型。
如果满足上述3个条件,派生类的函数就是虚函数。
并且该函数覆盖基类的虚函数。
1.5 纯虚函数是一种特别的虚函数,它没有函数的函数体部分,也没有为函数的功能提供实现的代码,它的实现版本必须由派生类给出,因此纯虚函数不能是友元函数。
拥有纯虚函数的类就是抽象类类,这种类不能实例化。
如果纯虚函数没有被重载,则派生类将继承此纯虚函数,即该派生类也是抽象。
3.选择题3.1在C++中,要实现动态联编,必须使用(D)调用虚函数。
A.类名B.派生类指针C.对象名D.基类指针3.2下列函数中,不能说明为虚函数的是(C)。
A.私有成员函数B.公有成员函数C.构造函数D.析构函数3.3在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回值(A)。
A.相同B.不同C.相容D.部分相同3.4当一个类的某个函数被说明为virtual时,该函数在该类的所有派生类中(A)。
A.都是虚函数B.只有被重新说明时才是虚函数C.只有被重新说明为virtual时才是虚函数D.都不是虚函数3.5(C)是一个在基类中说明的虚函数,它在该基类中没有定义,但要求任何派生类都必须定义自己的版本。
A.虚析构函数B.虚构造函数C.纯虚函数D.静态成员函数3.6 以下基类中的成员函数,哪个表示纯虚函数(C)。
A.virtual void vf(int);B.void vf(int)=0;C.virtual void vf( )=0;D.virtual void vf(int){ }3.7下列描述中,(D)是抽象类的特性。
接口编程练习题
接口编程练习题在软件开发中,接口编程是一项非常重要的技能。
通过接口编程,我们可以实现不同模块之间的通信和交互,提高代码的可复用性和可维护性。
为了帮助大家熟悉接口编程,我将给出一些接口编程的练习题,供大家实践和探索。
练习题一:接口定义请定义一个名为"Shape"的接口,具有计算面积和计算周长的两个方法。
这个接口可以被不同的图形类实现,比如圆形、正方形等。
每个图形类都需要实现这两个方法,并根据具体的形状计算出相应的面积和周长。
练习题二:接口的实现请创建一个圆形类"Circle",实现上述"Shape"接口,并根据半径计算圆形的面积和周长。
具体的计算公式可以自行选择。
练习题三:多态性应用请创建一个方法"printShapeInfo",接收一个"Shape"类型的参数,并打印该图形的面积和周长信息。
在方法内部,借助接口的多态性,可以接收不同形状的图形对象,并调用对应的方法。
练习题四:接口的扩展请思考并设计一个扩展"Shape"接口的子接口或实现类,增加计算体积的方法。
然后创建一个相应的图形类,实现该接口,并实现计算体积的方法。
练习题五:接口的应用场景请思考并描述在实际项目中,接口编程可以带来哪些好处和应用场景。
举例说明接口编程在实践中的应用情景,以及通过接口编程实现的功能和效果。
通过以上的练习题,我们可以初步了解和掌握接口编程的基本概念和用法。
接口编程的灵活性和可扩展性使得我们可以更好地进行模块化开发和代码复用,提高项目的开发效率和质量。
在实际的软件开发中,合理地运用接口编程可以帮助我们更好地组织和管理代码,提高系统的可维护性和可拓展性,是一个非常重要的编程技能。
希望大家通过这些接口编程的练习题,能够更加深入地理解和应用接口编程的思想和方法,为自己的软件开发能力提升打下坚实的基础。
希望大家能够在实践中不断探索和学习,不断提高自己的编程水平。
C++习题3(继承和多态)
C++习题3(继承和多态)C++习题3(继承和多态)一、选择题1、在C++中,类与类之间的继承关系具有( C )A)自反性 B)对称性 C)传递性 D)反对称性2、在公有继承的情况下,基类的成员(私有的除外)在派生类中的访问权限( B )A)受限制 B)保持不变 C)受保护 D)不受保护3、按解释中的要求在下列程序划线处填入的正确语句是:( C )#include class Base{public:void fun(){cout<<"Base::fun"<<=""> fun()cout<<"Derived::fun"<fun();4、在保护继承的情况下,基类的成员(私有的除外)在派生类中的访问权限( C )A)受限制 B)保持不变 C)受保护 D)不受保护5、在哪种派生方式中,派生类可以访问基类中的protected 成员(B )A)public和private B)public、protected和private C)protected和private D)仅protected6、当一个派生类仅有protected继承一个基类时,基类中的所有公有成员成为派生类的(C)A)public成员 B)private成员 C)protected成员 D)友元7、不论派生类以何种方法继承基类,都不能使用基类的(B )A)public成员 B)private成员 C)protected成员 D)public成员和protected成员8下面叙述错误的是(S )。
A )基类的protected成员在派生类中仍然是protected的 B)基类的protected成员在public派生类中仍然是protected的C)基类的protected成员在private派生类中是private的 D)基类的protected 成员不能被派生类的对象访问9、下列说法中错误的是(S )。
动物学练习题一
动物学练习题一一、是非题(对的打“√”,错的打“×”)1.双名法是国际上对种统一采用的命名法,它是由拉丁文或拉丁化的文字组成,属名在前,种名在后,属名和种名的第一个字母都要大写。
()2.生物重演律指出系统发育能够重演个体发育的主要过程。
()3.原生动物是单细胞构成的完整的有机体,作为一个动物体是最简单的,但作为一个细胞却很复杂。
()4.有些原生动物以群体的形式存在。
()5.草履虫在有光的情况下进行光合营养,无光情况下进行吞噬营养。
()6.海绵动物和腔肠动物都是两胚层动物。
( )7.海绵动物是一类在海里行漂浮生活的动物。
(×)8.海绵动物又称为多孔动物或侧生动物。
()9.海绵动物无真正的胚层,只有原始的细胞分化,无明确的组织。
()10.海绵动物是最原始最低等的多细胞动物,它有了细胞分化,但没有明确的组织。
()11.海绵动物的体腔不发达,因此它是最原始最低等的多细胞动物。
()12.海绵动物是真正后生动物的开始。
()13.腔肠动物的水管系统与棘皮动物的水管系统同源,都是属于次生体腔的一部分。
( )14.腔肠动物是两胚层动物。
()15.腔肠动物具有两种基本形态:水螅型和水母型。
()16.珊瑚全部生活在海洋中。
()17.腔肠动物是一类比较高等的原生动物。
()二.填空题:1.动物界的分类阶梯是______、______、______、______、______、______;用英文表示分别是______、______、______、______、______和______。
2.五界学说将生物分为以下五个界:_______界、_______界、_______界、_______界和_______界。
3.动物的四大组织为:________、________、________、________。
4.动物命名的双名法由两部分组成,第一部分是该物种的,第二部分是该物种的,最后加上定名人。
5.一群相同或相似的细胞及其相关的非细胞物质彼此以一定的形式连接,并形成一定的结构,担负一定的功能,称为。
Java程序设计教程第7章7.2 多 态
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(); }
面向对象练习题
面向对象练习题一、选择题1. 在面向对象编程中,以下哪个概念不是面向对象的核心概念?A. 封装B. 继承C. 多态D. 函数2. 以下哪个选项是Java语言中实现多态的方式?A. 通过继承B. 通过接口C. 通过重载D. 通过重写3. 在面向对象编程中,一个类可以有多少个父类?A. 0个或1个B. 1个C. 多个D. 无数个4. 以下哪个关键字在Java中用于定义一个类?A. structB. classC. interfaceD. enum5. 以下哪个是Java中创建对象的关键字?A. newB. createC. instanceD. object二、填空题6. 在面向对象编程中,______ 是指将数据和操作这些数据的方法结合在一起。
7. 一个类可以包含______ 和______ 两种成员。
8. 封装的目的是______ 数据,并对外部隐藏内部细节。
9. 继承可以使得子类获得父类的______ 和______。
10. 多态性允许不同类的对象对同一消息做出响应,但具体______ 取决于对象的实际类型。
三、简答题11. 简述面向对象编程的三大特性,并举例说明它们在实际编程中的应用。
12. 解释什么是接口,并说明接口与抽象类的区别。
13. 描述如何使用Java实现一个简单的类,并说明如何创建该类的实例。
四、编程题14. 编写一个Java类`Person`,包含属性`name`和`age`,以及一个方法`introduce()`,该方法输出个人信息。
15. 假设你已经有一个名为`Animal`的抽象类,它包含一个抽象方法`makeSound()`。
编写一个名为`Dog`的类,继承自`Animal`,并实现`makeSound()`方法,使得`Dog`对象调用该方法时输出"Woof!"。
16. 创建一个Java程序,包含一个名为`Vehicle`的类,它有一个属性`speed`和一个方法`increaseSpeed(int increment)`。
Java程序员认证考试题
●第一章Java入门●第二章数据类型和运算符●第三章流程控制与数组●第四章封装●第五章继承●第六章抽象类与接口●第七章多态●第八章异常●第九章多线程机制●第十章输入输出流●第十一章使用泛型和集合框架●第十二章基于Swing的图形用户界面(GUI)设计●第十三章Java事件驱动编程第一章练习题(Java入门)1.下列哪项不是JDK所包含的内容?(选一项)A.Java编程语言B.工具及工具的APIC.Java EE扩展APID.Java平台虚拟机2.下列关于JDK、JRE和JVM的描述。
哪项正确?A.JDK中包含了JRE,JVM中包含了JREB.JRE中包含了JDK,JDK中包含了JVMC.JRE中包含了JDK,JVM中包含了JRED.JDK中包含了JRE,JRE中包含了JVM3.下列哪个工具可以编译java源文件?A.javacB.jdbC.javadocD.junit4.JDK工具javadoc的作用是哪项?A.生成Java文档B.编译Java源文件C.执行Java类文件D.测试Java代码5.以下哪些包是Java标准库中常用的包?(选三项)A.java.langB.javax.servlet .httpC.j ava. ioD.java.sql6.使用JDK工具生成的Java文档的文件格式是?A.XML格式B.自定义格式c.二进制格式D.HTML格式7.以下关于JVM的叙述,哪项正确?(选两项)A.JVM运行于操作系统之上,它依赖于操作系统B.JVM运行于操作系统之上,它与操作系统无关C.JVM支持Java程序运行,它能够直接运行Java字节码文件D.JVM支持Java程序运行,它能够直接运行Java源代码文件8.以下关于支持Java运行平台的叙述,哪项错误?A.Java可在Solaris平台上运行B.Java可在Windows平台上运行C.Java语言与平台无关。
Java程序的运行结果依赖于操作系统D.Java语言与平台无关。
chap6习题练习
4) int value; 5) } 6) 7) //MySubClass.java 8) package corejava.temp; 9) import corejava.chp6.MyClass; 10) public class MySubClass extends MyClass{ 11) public MySubClass(int value){ 12) this.value = value; 13) } 14) } 选择正确答案: A. 编译通过 B. 编译不通过,应把第12 行改成super.value = value; C. 编译不通过,应把第12 行改成super(value); D. 编译不通过,可以为MySubClass 增加一个value 属性 E. 编 译 不 通 过 , 把 第 4 行 改 为 protected int value; 把 第 12 行 改 为 super.value = value; 8. *(继承、对象构造过程)有以下代码 class ClassA{ public ClassA(){ System.out.println("ClassA()"); } } class ClassB{ public ClassB(){ System.out.println("ClassB()"); } } class ClassC extends ClassA{ public ClassC(){ System.out.println("ClassC()"); } } class ClassD extends ClassB{ private ClassA ca = new ClassA(); private ClassC cc; public ClassD(){ System.out.println("ClassD()"); } public ClassD(int i){ cc = new ClassC(); System.out.println("ClassD(int)"); }
c++多态性相关习题
多态性10.2 典型例题分析与解答例题1:指出下列对定义重载函数的要求中,哪些是错误的提法。
A.要求参数的个数不同。
B.要求参数中至少有一个类型不同。
C.求函数的返回值不同。
D. 要求参数的个数相同时,参数类型不同。
答案: C例题3:下面关于友元的描述中,错误的是()。
A. 友元函数可以访问该类的私有数据成员B. 一个类的友元类中的成员函数都是这个类的友元函数C. 友元可以提高程序的运行效率D. 类与类之间的友元关系可以继承答案:D1例题4:下述静态成员的特性中,()是错误的。
A. 静态成员函数不能利用this指针B. 静态数据成员要在类体外进行初始化C. 引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符D. 静态数据成员不是所有对象所共有的答案:D例题5:关于虚函数的描述中,()是正确的。
A. 虚函数是一个静态成员函数B. 虚函数是一个非成员函数C. 虚函数既可以在函数说明时定义,也可以在函数实现时定义D. 派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型参考答案:D2例题11:分析下列程序的输出结果。
#include <iostream.h>class A{public:A() { cout<<"A's cons."<<endl; }virtual ~A() { cout<<"A's des."<<endl; }virtual void f() { cout<<"A's f()."<<endl; } void g() { f(); }};class B : public A{public:B() { f(); cout<<"B's cons."<<endl; }3~B() { cout<<"B's des."<<endl; }};class C : public B{public:C() { cout<<"C's cons."<<endl; }~C() { cout<<"C's des."<<endl; }void f() { cout<<"C's f()."<<endl; }};void main(){ A *a=new C;a->g();delete a;}4运行结果:A's cons.A's f().B's cons.C's cons.C's f().C's des.B's des.A's des.10.3 教材习题解答1.选择题(1)下列关于动态联编的描述中,错误的是()。
第八章 继承与多态习题(C++)
第八章继承与多态习题一.基本概念与基础知识自测题8.1填空题8.1.1 如果类α继承了类β,则类α称为(1)类,而类β称为(2)类。
(3)类的对象可作为(4)类的对象处理,反过来不行,因为(5)。
如果强制转换则要注意(6)。
答案:(1)基类(2)派生类(3)派生类(4)基类(5)派生类有一些新成员(6)只能派生类强制转换为基类8.1.2 当用public继承从基类派生一个类时,基类的public成员成为派生类的(1)成员,protected成员成为派生类的(2)成员,对private成员是(3)。
公有派生可以使其类的(4),所以公有派生是主流。
答案:(1)public成员(2)protected成员(3)不可访问(4)接口不变8.1.3 利用继承能够实现(1)。
这种实现缩短了程序开发的时间,VC++中的(2)很好地体现了这一点。
答案:(1)代码的复用(2)MFC编程8.1.4 一个派生类只有一个直接基类的情况称为(1),而有多个直接基类的情况称为(2)。
继承体现了类的(3)概念,这在MFC中得到了很好表现,MFC中只采用了(4)。
答案:(1)单继承(2)多重继承(3)层次(4)单继承8.1.5 C++中多态性包括两种多态性:(1)和(2)。
前者是通过(3)实现的,而后者是通过(4)和(5)来实现的。
答案:(1)编译时的(2)运行时的(3)函数和运算符的重载(4)类继承关系(5)虚函数8.1.6 在基类中将一个成员函数说明成虚函数后,在其派生类中只要(1)、(2)和(3)完全一样就认为是虚函数,而不必再加关键字(4)。
如有任何不同,则认为是(5)而不是虚函数。
除了非成员函数不能作为虚函数外,(6)、(7)和(8)也不能作为虚函数。
答案:(1)同虚函数名(2)同参数表(3)同返回类型。
如基类中返回基类指针,而派生类中返回派生类指针是允许的(4)virtual(5)重载(6)静态成员函数(7)内联函数(8)构造函数8.1.7 纯虚函数定义时在函数参数表后加(1),它表明程序员对函数(2),其本质是将指向函数体的指针定为(3)。
java的初学者练习题
一、Java基础语法1.1. 数据类型int a = 10;double b = 3.14;char c = 'A';boolean d = true;1.2. 变量声明与赋值声明一个整型变量并赋值为100。
声明一个字符串变量并赋值为"Hello, World!"。
声明一个布尔型变量并赋值为false。
1.3. 运算符计算 5 + 6 2 的结果。
计算 (10 / 3) 2 的结果。
将变量 a 的值增加 5。
1.4. 条件语句如果变量 a 大于 10,输出 "a is greater than 10"。
如果变量 b 小于 0,输出 "b is negative"。
如果变量 c 等于 'A',输出 "c is 'A'".1.5. 循环语句使用 for 循环输出 1 到 10 的所有整数。
使用 while 循环输出 1 到 5 的所有整数。
使用 dowhile 循环输出 1 到 3 的所有整数。
二、面向对象编程2.1. 类与对象定义一个名为 Person 的类,包含 name 和 age 两个属性。
创建一个 Person 对象,并设置其 name 为 "John" 和 age 为25。
2.2. 构造方法修改 Person 类,添加一个构造方法,接收 name 和 age 作为参数。
创建一个 Person 对象,并使用构造方法设置其属性。
2.3. 方法在 Person 类中添加一个方法,用于输出对象的 name 和 age。
创建一个 Person 对象,并调用其方法输出信息。
2.4. 继承定义一个名为 Student 类,继承自 Person 类。
在 Student 类中添加一个属性:score。
创建一个 Student 对象,并设置其 name、age 和 score。
多态的练习题
多态的练习题多态(Polymorphism)是面向对象编程的重要特性之一,在实际应用中起到了非常关键的作用。
掌握多态的概念和使用方法对于提高程序的灵活性和可扩展性至关重要。
本文将介绍一些多态的练习题,帮助读者巩固对多态的理解和运用。
1. 题目一:动物的叫声我们有多种动物,包括狗、猫和鸟等,它们都有自己特有的叫声。
请使用多态的方式来实现一个动物类 Animal,以及各个具体动物的子类(Dog、Cat、Bird)。
在 Animal 类中定义一个名为 makeSound 的方法,用于输出不同动物的叫声。
在子类中重写该方法,分别输出对应动物的叫声。
示例代码:```javapublic class Animal {public void makeSound() {System.out.println("动物发出叫声");}}public class Dog extends Animal {@Overridepublic void makeSound() {System.out.println("狗狗汪汪叫"); }}public class Cat extends Animal {@Overridepublic void makeSound() {System.out.println("喵喵喵");}}public class Bird extends Animal {@Overridepublic void makeSound() {System.out.println("鸟儿唧唧叫"); }}public class Main {public static void main(String[] args) { Animal[] animals = new Animal[3];animals[0] = new Dog();animals[1] = new Cat();animals[2] = new Bird();for (Animal animal : animals) {animal.makeSound();}}}```2. 题目二:几何图形的面积计算我们有三种几何图形:圆形、矩形和三角形,它们都有自己对应的面积计算公式。
JAVA基础第章继承与多态练习题
第4章继承与多态一.选择题1. 编译和运行以下两文件结果是( D )。
//文件P1.javapackage MyPackage;class P1{void afancymethod(){System.out.println("What a fancy method");}}//文件P2.javapackage YourPackage;import MyPackage.*;public class P2 extends P1{public static void main(String argv[]){P2 p2 = new P2();p2.afancymethod();}}A.两个均通过编译,P2运行时输出What a fancy methodB.没一个通过编译C.两个均通过编译,但P2运行时出错D.P1 通过编译,但P2出现编译错误2.下列程序运行的结果是(A )。
package a;package b;public class D{public static void main(String args[]) {System.out.println("^_^,今天心情不错!");}}A.出现编译错误B.^_^,今天心情不错!C.通过编译,运行时出错D.以上都不对3.Java的核心类库中哪个包,Java系统能自动引入(B )。
A.java.io B.ngC. D.java.util4.下列程序运行结果是( A )。
private class Base{Base(){int i = 100;System.out.println(i);}public class Pri extends Base{static int i = 200;public static void main(String argv[]){Pri p = new Pri();System.out.println(i);}}A.编译错误B.200 C.100 200 D.1005.下列程序运行结果是(C )。
药物基因组学练习题
药物基因组学
一、A1
1、关于基因多态性表述错误的是
A、人群中可遗传的变异分为质量性状、数量性状和阈性状
B、基因多态性是指在一个生物群体中,呈不连续多峰曲线分布的一个或多个等位基因发生突变而产生的遗传变异
C、质量性状主要由一对等位基因决定,其性状的变异是可连续的
D、数量性状变异是连续的,不同个体间只有量的差异而无质的不同
E、阈性状在表型上不连续,但在遗传上却由多对等位基因所决定
2、细胞色素P450酶(CYP)系中最大的家族是
A、CYP1
B、CYP2
C、CYP3
D、CYP7
E、CYP11
3、基因组不包括
A、基因
B、基因间区域
C、编码区
D、非编码区
E、蛋白质
4、下列关于药物基因组学表述错误的是
A、人群中可遗传的变异分为质量性状、数量性状和阈性状
B、CYP3是CYP酶系中最大的家族
C、细胞P450酶系是参与药物代谢的重要酶系
D、CYP2C9突变率的发生率还具有种族差异
E、华人华法林的维持剂量比白种人约低50%。
java多态练习题
Java多态练习题一、选择题A. 多态是指同一方法可以根据对象的不同而有不同的实现B. 多态只能用于类的继承关系中C. 在Java中,方法重载不属于多态D. 多态可以提高代码的可扩展性和可维护性A. extendsB. implementsC. staticD. overrideA. 可以直接调用子类的特有方法B. 必须进行类型转换才能调用子类的特有方法C. 可以调用父类的所有方法D. 无法调用任何方法二、填空题1. 在Java中,多态的三个必要条件是:________、________和________。
2. 当子类重写父类的方法后,可以使用________关键字来调用父类的方法。
3. 在Java中,________关键字用于判断两个对象的类型是否相同。
三、判断题1. 多态允许同一操作作用于不同的对象,产生不同的执行结果。
()2. 方法重载(Overload)和方法重写(Override)都是实现多态的方式。
()3. 在Java中,子类对象可以直接赋值给父类引用,而无需进行类型转换。
()四、简答题1. 请简述Java中多态的作用。
2. 请说明方法重写(Override)和方法重载(Overload)的区别。
3. 在使用多态时,如何访问子类特有的方法?五、编程题1. 定义一个动物类(Animal),包含一个吃(eat)的方法。
再定义一个狗类(Dog),继承动物类,并重写吃(eat)方法。
编写一个测试类,创建一个动物类引用,指向一个狗对象,并调用吃(eat)方法。
2. 编写一个图形类(Shape),包含一个求面积(getArea)的方法。
再定义两个子类:矩形类(Rectangle)和圆形类(Circle),分别重写求面积(getArea)方法。
编写一个测试类,创建一个图形数组,包含矩形和圆形对象,遍历数组并调用求面积(getArea)方法。
3. 定义一个员工类(Employee),包含姓名、工资等属性,以及一个计算工资(calculateSalary)的方法。
java封装继承多态作业题
下面是一个关于Java封装、继承和多态的作业题,可供学习和练习。
题目:学生管理系统
编写一个简单的Java程序,模拟一个学生管理系统。
系统应该包括以下类:
Student类:
属性:学生姓名、学号、年龄、成绩
方法:构造函数、获取学生信息的方法、设置学生信息的方法
Course类:
属性:课程名称、课程编号、授课老师
方法:构造函数、获取课程信息的方法、设置课程信息的方法
Teacher类:
属性:老师姓名、工号、教授课程
方法:构造函数、获取老师信息的方法、设置老师信息的方法
School类:
属性:学校名称、地址、联系电话
方法:构造函数、获取学校信息的方法、设置学校信息的方法
Main类:
创建几个学生对象、课程对象和老师对象,并分别设置它们的信息。
使用多态性质,创建一个列表或数组,存储不同的学生、课程和老师对象,然后通过循环遍历输出它们的信息。
要求:
使用封装的原则,将类的属性设置为私有,并提供公共的访问和修改方法。
使用继承的原则,确保子类可以继承父类的属性和方法。
使用多态的原则,通过父类的引用来操作子类对象。
这个作业题可以帮助学习者理解Java中的封装、继承和多态的概念,并将其应用到一个实际的项目中。
学生可以根据自己的理解和知识水平来扩展这个项目,添加更多的功能和类。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、生成表示学生的类XS,提供成员函数dispXM()、dispXB()和dispNL()分别用来显示姓名、性别和年龄,并将他们全部定义为纯虚函数;生成CZS类表示初中生,包含数据成员xm、xb和nl表示学生的姓名、性别和年龄,提供成员函数dispXM()、dispXB()和dispNL()分别用来显示姓名、性别和年龄;再生成类GZS表示高中生和类DXS表示大学生,同样包含相同含义的数据成员xm、xb和nl,也包括成员函数dispXM()、dispXB()和dispNL()。
要求:(1)设计和实现基本类XS(2)设计和实现派生类CZS,GZS和DXS(3)分别生成CZS、GZS、DXS类对象(4)将CZS、GZS、DXS类对象的指针赋给指针赋给XS类的指针变量。
(5)分别用XS类的指针和引用访问dispXM()、dispXB()和dispNL()函数。
(6)观察程序结果。
#include <iostream>#include <string.h>using namespace std;class XS{public:virtual void dispXM()=0;virtual void dispXB()=0;virtual void dispNL()=0;};class CZS:public XS{public:CZS(char * m="张三",int b=1,int n=14);void dispXM();void dispXB();void dispNL();protected:char xm[9];int xb,nl;};CZS::CZS(char *m,int b,int n){strcpy(xm,m);xb=b,nl=n;}void CZS::dispXM(){cout<<"name:"<<xm<<endl;}void CZS::dispXB(){if(xb==1)cout<<"Man"<<endl;if(xb==0)cout<<"Woman"<<endl;}void CZS::dispNL(){cout<<"age:"<<nl<<endl;}class GZS:public XS{public:GZS(char * m="张三",int b=1,int n=17);void dispXM();void dispXB();void dispNL();protected:char xm[9];int xb,nl;};GZS::GZS(char *m,int b,int n){strcpy(xm,m);xb=b,nl=n;}void GZS::dispXM(){cout<<"name:"<<xm<<endl;}void GZS::dispXB(){if(xb==1)cout<<"Man"<<endl;if(xb==0)cout<<"Woman"<<endl;}void GZS::dispNL(){cout<<"age:"<<nl<<endl;}class DXS:public XS{public:DXS(char * m="张三",int b=1,int n=20);void dispXM();void dispXB();void dispNL();protected:char xm[9];int xb,nl;};DXS::DXS(char *m,int b,int n){strcpy(xm,m);xb=b,nl=n;}void DXS::dispXM(){cout<<"name:"<<xm<<endl;}void DXS::dispXB(){if(xb==1)cout<<"Man"<<endl;if(xb==0)cout<<"Woman"<<endl; }void DXS::dispNL(){cout<<"age:"<<nl<<endl;}void displayP(XS *p){p->dispXM();p->dispXB();p->dispNL();}void displayR( XS &p){p.dispXM();p.dispXB();p.dispNL();}void main(){CZS czs("赵一",1,12);GZS gzs("钱二",0,15);DXS dxs("孙三",1,18);XS *p;//定义抽象基类的指针变量pp=&czs;//将初中生对象czs的地址赋给pdisplayP(p);p=&gzs;//将高中生对象czs的地址赋给pdisplayP(p);p=&dxs;//将大学生对象czs的地址赋给pdisplayP(p);cout<<"\n----------------------------------------\n";XS &r1=czs;//定义抽象基类的引用变量r1为czs的别名displayR(r1);XS &r2=gzs;//定义抽象基类的引用变量r2为czs的别名displayR(r2);XS &r3=dxs;//定义抽象基类的引用变量r3为czs的别名displayR(r3);cout<<"\n----------------------------------------\n";}2、某小型公司主要有3类人员:经理、兼职技术人员、兼职销售员。
这些人员分别具有以下属性。
经理:姓名、编号、固定工资、当月薪水、计算月薪、显示信息兼职技术人员:姓名、编号、工作小时、每小时工资额、当月薪水、计算月薪、显示信息;兼职销售员:姓名、编号、销售额、销售额提成、当月薪水、计算月薪、显示信息要求:人员编号基数为1000,每输入一个人员信息编号顺序加1月薪计算办法是经理固定月薪8000元;兼职技术人员按100元/小时领取月薪;兼职推销员按当月销售额的4%提成。
根绝题目要求,设计一个基类employee,然后派生出technician (兼职技术人员)类、manager(经理)类和salesman(兼职销售员)类。
部分成员函数设置为虚函数将“<<”和“>>”运算符#include <iostream>#include <iomanip>#include <string.h>#include <fstream>using namespace std;const int Maxr=100;class Employee //职工类{int tag;//删除标记int no;//职工编号char name[20];char zw[20];//职工姓名int salary;//职工工资public:Employee(){}char *getname() {return name;}//获取名字int gettag() {return tag;}//获取标记int getno() {return no;}//获取编号int getsalary(){return salary;}void setzw(char q[])//设置名字{strcpy(zw,q);}void setname(char na[])//设置名字{strcpy(name,na);}void getsalary(int sa){salary=sa;}void delna(){tag=1;}//删除void addemp(int n,int sa,char *na,char *q)//增加{tag=0;no=n;salary=sa;strcpy(name,na);strcpy(zw,q);}void disp()//显示职工信息{cout < <"│" < <setw(10) < <no < <"│" < <setw(10) < <name < <"│" < <setw(10) < <salary < <"│" < <setw(10) < <zw < <"│" < <endl;cout < <"├—————┼—————┼—————┼—————┤" < <endl;}};class Database//职工数据类{int top;Employee read[Maxr];public:Database()//将职工信息从employee.txt读取到read[]中{ Employee s;top=-1;fstream file("employee.txt",ios::in);while (1){((char *)&s,sizeof(s));if (!file) break;top++;read[top]=s;}();}void clear()//删除所有{top=-1;}int addemp (int n, int sa,char *na,char*q) //增加职工{Employee *p=query(n);if (p==NULL){top++;read[top].addemp(n,sa,na,q);return 1;}return 0;}Employee *query(int empid){for (int i=0;i <=top;i++)if (read[i].getno()==empid && read[i].gettag()==0) return &read[i];return NULL;}Employee *query1(char empna[20]){for (int i=0;i <=top;i++)if ((read[i].getname()==empna) && read[i].gettag()==0)return &read[i];return NULL;}void disp() //职工信息显示{for (int i=0;i <=top;i++)read[i].disp();}void empdata();~Database() //将read[]中的信息读如到employee.txt中{fstream file("employee.txt",ios::out);for (int i=0;i <=top;i++)if (read[i].gettag()==0)((char *)&read[i],sizeof(read[i]));();}};void Database::empdata()//职工维护{int choice=1;int m=1;int b=1;char rname[20];int empid; int empsa;char q[20];Employee *r;while (choice!=0){cout < <"职工维护1:新增2:更改3:删除4:查找5:显示6:全删0:退出=>"; cin>>choice;switch (choice){case 1:cout < <setw(50) < <" ┌—————————————┐\n";cout < <setw(50) < <" │ 请选择您所需的操作│\n";cout < <setw(50) < <" │ 经理:1,并按回车键│\n";cout < <setw(50) < <" │ 业务经理:2,并按回车键│\n";cout < <setw(50) < <" │ 普通职工:3,并按回车键│\n";cout < <setw(50) < <" └—————————————┘\n";cin>>m;while(m!=0){switch(m){case 1:cout < <"输入经理编号:";cin>>empid;cout < <"输入奖金: ";cin>>empsa;cout < <"输入经理姓名:";cin>>rname;addemp(empid,8000+empsa,rname,"经理"); break;case 2:cout < <"输入业务经理编号:";cin>>empid;cout < <"输入月提成: ";cin>>empsa;cout < <"输入业务经理姓名:";cin>>rname;addemp(empid,4000+empsa,rname,"业务经理"); break;case 3:cout < <"输入职工编号:";cin>>empid;cout < <"输入工资: ";cin>>empsa;cout < <"输入职工姓名:";cin>>rname;addemp(empid,empsa,rname,"普通职工"); break;}break;}break;case 2:cout < <"输入职工编号:";cin>>empid;r=query(empid);if (r==NULL){cout < <"该职工不存在" < <endl;break;}cout < <"输入新的工资:" < <endl;cin>>empsa;r->getsalary(empsa);cout < <"请输入新的职务" < <endl;cin>>q;r->setzw(q);addemp(empid,empsa,rname,q);break;case 3:cout < <"输入职工编号:";cin>>empid;r=query(empid);if (r==NULL){cout < <"该读者不存在" < <endl;break;}r->delna();break;case 4:cout < <setw(50) < <" ┌—————————————┐\n";cout < <setw(50) < <" │ 请选择您所需的操作│\n";cout < <setw(50) < <" │ 按编号查找1,并按回车键│\n";cout < <setw(50) < <" │ 返回2,并按回车键│\n";cout < <setw(50) < <" └—————————————┘\n";cin>>b;while(b!=0){switch(b){case 1:cout < <"输入职工编号:";cin>>empid;r=query(empid);if (r==NULL){cout < <"该职工不存在" < <endl;break;}cout < <"├—————┼—————┼—————┼—————┤" < <endl;cout < <"│" < <setw(10) < <"编号" < <"│" < <setw(10) < <"姓名" < <"│" < <setw(10) < <"工资" < <"│" < <setw(10) < <"职务" < <"│" < <endl;cout < <"├—————┼—————┼—————┼—————┤" < <endl;r->disp();break;case 2:break;}break;}break;case 5:cout < <"├—————┼—————┼—————┼—————┤" < <endl;cout < <"│" < <setw(10) < <"编号" < <"│" < <setw(10) < <"姓名" < <"│" < <setw(10) < <"工资" < <"│" < <setw(10) < <"职务" < <"│" < <endl;cout < <"├—————┼—————┼—————┼—————┤" < <endl;disp();break;case 6:clear();break;}}}void main(){int choice=1;Database EmpDB;while(choice!=0){cout < <"***************************************************************************** ***" < <endl;cout < <endl;cout < <endl;cout < <setw(20) < <"******************************欢迎使用职工管理系统******************************" < <endl;cout < <endl;cout < <endl;cout < <setw(50) < <" ┌—————————————┐\n";cout < <setw(50) < <" │ 请选择您所需的操作│\n";cout < <setw(50) < <" │ │\n";cout < <setw(50) < <" │ 操作1,并按回车键│\n";cout < <setw(50) < <" │ │\n";cout < <setw(50) < <" │ 返回0,并按回车键│\n";cout < <setw(50) < <" └—————————————┘\n";cin>>choice;switch(choice){case 1:while(1){cout < <setw(20);EmpDB.empdata();break;break;}}}}3、堆栈的特点是:先进先出定义了一个堆栈类stack,包括初始化,压栈(就是将元素放在栈顶)、弹栈(取栈顶的一个元素),释放堆栈等操作要求运用模版实现,堆栈中可以根据需求放入double、int、char*等数据对象。