练习题—方法和方法的重载
javase练习题
javase练习题一、基础知识篇1. Java基本数据类型有哪些?分别写出它们的默认值。
2. 什么是封装?简述封装的优点。
3. 请写出Java中的四种访问修饰符,并说明它们的访问权限。
4. 什么是构造方法?它与普通方法的区别是什么?5. 在Java中,如何实现方法的重载和重写?二、面向对象篇2. 如何实现一个简单的Java类,包含两个属性和一个方法?3. 简述Java中的继承机制及其作用。
4. 什么是接口?与抽象类有什么区别?5. 请举例说明Java中的多态性。
三、集合框架篇1. Java集合框架中常用的集合类有哪些?2. 请简述ArrayList和LinkedList的区别。
3. 什么是HashMap?它的工作原理是什么?4. 请解释HashSet和TreeSet的区别。
5. 如何遍历一个List集合?四、异常处理篇1. 什么是异常?Java中的异常分为哪几类?2. 请举例说明trycatchfinally语句的使用方法。
3. 什么是自定义异常?如何创建和使用自定义异常?4. 请简述Java异常处理机制的作用。
int a = 10;int b = 0;int result = a / b;五、IO流篇1. 请简述Java IO流的分类。
2. 如何实现文件复制功能?3. 请解释字节流和字符流的区别。
4. 什么是序列化和反序列化?如何实现?5. 请举例说明Java中的文件操作。
六、多线程篇1. 什么是线程?线程和进程有什么区别?2. 请简述线程的生命周期。
3. 如何创建一个线程?有哪几种方式?4. 什么是线程同步?为什么需要线程同步?5. 请解释线程池的概念及其作用。
七、网络编程篇1. 请简述TCP和UDP协议的区别。
2. 如何实现一个简单的Socket通信?3. 什么是URL?如何解析一个URL?4. 请简述HTTP协议的工作原理。
5. 如何实现一个简单的HTTP服务器?八、Java新特性篇1. 请列举Java 8中的几个新特性。
python 多态的编程题
Python是一个非常灵活、强大的编程语言,它支持面向对象编程(OOP)的特性,其中多态是OOP中一个非常重要的概念。
多态是指在不同的子类对象上调用相同的方法,根据对象的类型以不同的方式执行相同的方法。
在Python中,多态可以通过方法的重写、方法的重载和方法的重载与重写结合来实现。
接下来,我们将通过一些具体的编程题目来深入探讨Python中多态的应用。
1. 方法的重写假设有一个动物类Animal,其中有一个eat方法,现在我们引入了两个子类Dog和Cat,它们分别继承了Animal类,并且都重写了eat 方法。
具体的代码如下:```pythonclass Animal:def eat(self):passclass Dog(Animal):def eat(self):print("狗吃骨头")class Cat(Animal):def eat(self):print("猫吃鱼")```使用方法的重写后,无论是调用Dog类的eat方法还是调用Cat类的eat方法,都可以得到正确的输出,实现了多态的效果。
2. 方法的重载接下来,我们来看方法的重载。
假设现在我们需要实现一个计算器类Calculator,其中有一个add方法,可以接受不同数量的参数进行相加。
具体的代码如下:```pythonclass Calculator:def add(self, *args):result = 0for num in args:result += numreturn result```通过使用*args参数,我们可以实现add方法的重载,可以接受任意数量的参数进行相加。
这样一来,无论是add(1, 2)还是add(1, 2, 3, 4, 5),都可以得到正确的输出,实现了多态的效果。
3. 方法的重载与重写结合我们来看方法的重载与重写结合的情况。
假设有一个图形类Shape,其中有一个draw方法,现在我们引入了两个子类Circle和Rectangle,它们分别继承了Shape类,并且Circle类重写了draw 方法,Rectangle类重载了draw方法。
java方法重载练习题
java方法重载练习题方法重载是Java中的一种特性,它可以让我们在同一个类中定义多个同名的方法,但这些方法必须具有不同的参数列表。
方法重载的主要作用是为了提高代码的可读性和代码的复用性。
下面是一些Java方法重载的练习题,希望通过这些题目能够帮助大家更好地理解方法重载的概念和使用。
题目一:请定义一个名为"add"的方法,该方法接受两个int类型的参数,并返回它们的和。
然后再定义一个名为"add"的方法,该方法接受两个double类型的参数,并返回它们的和。
最后在主函数中调用这两个方法并打印结果。
题目二:请定义一个名为"printArea"的方法,该方法接受一个int类型的参数radius,并计算并输出一个圆的面积。
然后再定义一个名为"printArea"的方法,该方法接受两个int类型的参数width和height,并计算并输出一个矩形的面积。
最后在主函数中调用这两个方法并打印结果。
题目三:请定义一个名为"findMax"的方法,该方法接受两个int类型的参数,然后返回它们中的较大值。
然后再定义一个名为"findMax"的方法,该方法接受三个int类型的参数,并返回它们中的较大值。
最后在主函数中调用这两个方法并打印结果。
题目四:请定义一个名为"concatenate"的方法,该方法接受两个String类型的参数,并返回它们连接后的结果。
然后再定义一个名为"concatenate"的方法,该方法接受三个String类型的参数,并返回它们连接后的结果。
最后在主函数中调用这两个方法并打印结果。
以上是一些关于Java方法重载的练习题,希望对大家的学习有所帮助。
通过这些题目的练习,可以加深对方法重载的理解,并掌握方法重载的使用技巧。
方法重载是Java中非常常用的特性,学好方法重载对我们的程序设计能力提升非常有帮助。
Java基础练习3(重载和重写)
Java基础练习3(重载和重写)1.(多选题)给定java代码如下所⽰,在1处新增下列()⽅法,是对show()⽅法的重载public class Test{public void show(int x, int y, int z) { }//1}A.public int show(int x,int y,float z){return 0;}B.public int show(int x,int y,int z){return 0;}C.public void show(int x,int z){}D.public viod show(int z,int y,int x){}答案:AC解析:本题考查⽅法的重载规则⽅法的重载必须满⾜⽅法名相同和参数不同(类型或个数)选项AC满⾜重载的条件,正确选项BD参数都与定义的⽅法参数相同,不是重载。
2.(单选题)类A、B和C的定义如下:public class A {public void f() {System.out.println("A.f()");}}public class B extends A {public void f() {System.out.println("B.f()");}}public class C {public void g(A a) {System.out.println("g(A a)");a.f();}public void g(B b) {System.out.println("g(B b)");b.f();}}运⾏下列程序:C c = new C();A e = new B();c.g(e);输出的结果是()A. g(A a) A.f()B. g(A a) B.f()C. g(B b) A.f()D. g(B b) B.f()答案:B解析:C类中的两个⽅法是重载的⽅法,编译器会在编译时根据签名的不同来绑定调⽤不同的⽅法A e =new B(); 这句是⼀个向上造型,e是A类的引⽤,但是指向的是B类的对象,⽽重载看的是参数的引⽤类型,重写才是看的对象类型因为c调⽤的g⽅法参数是A类型的,所以匹配的是g(A a)的⽅法,先输出"g(A a)",然后执⾏a.f(); A类和B类是⽗⼦类关系,两个f()是重写的⽅法,执⾏哪个⽅法类的⽅法要看具体的对象⽽e指向的对象是B对象,所以找到B类中的f⽅法输出"B.f()"也就是⼦类继承⽗类时,调⽤的⽅法都是⼦类重写后的⽅法3.(多选题)请看下列代码public class Tetromino {protected int move(int x) {return 0;}}class T extends Tetromino {<插⼊代码>}在<插⼊代码>处填⼊选项中的代码,使T类没有编译错误的是()A.public int move(int x) { return 0; }B.private int move(int x) { return 0; }C.private int move(long x) { return 0; }D.protected long move(int x) { return 0; }答案:AC解析:本题考查⽅法的重写和重载语法。
运算符重载练习题.
运算符重载一.单项选择题1.下列运算符中,运算符在C++中不能重载。
A.?: B.+ C. D.<=解:C++中不能被重载的运算符有:·,一,::,?:。
本题答案为A。
2.下列运算符中,运算符在C++中不能重载。
A.&& B.[] C.:: D.new解:c++中不能被重载的运算符有:·,·+,::,?:。
本题答案为c。
3.下列关于运算符重载的描述中,是正确的。
A.运算符重载可以改变操作数的个数B.运算符重载可以改变优先级C.运算符重载可以改变结合性D.运算符重载不可以改变语法结构解:运算符重载不能改变操作数的个数、运算符的优先级、运算符的结合性和运算程的语法结构。
本题答案为D。
4.友元运算符objl>obj2被C++编译器解释为。
A.operator>(objl,obj2) B.>(obj1,obj2)C.obj2.operator:>(obj1) D.objl.operator>(obj2)解:重载为友元函数的运算符的调用形式如下:operator<运算符>(<参数1>,<参数2>)等价于:<参数1><运算符><参数2>本题答案为A。
5.现需要对list类对象使用的逻辑运算符“==”重载,以下函数声明是正确的。
A、list & list::operator==(const list &a);B、list list::operator==(const list &a);C、bool & list::operator==(const list &a);D、bool list::operator==(const list &a);6. 以下类中分别说明了“+=”和“++”运算符重载函数的原型。
如果主函数中有定义:fun m,c,d;,那么,执行语句c=m++; 时,编译器把m++解释为: (33)A) c.operator++(m); B) m=operator++(m);C) m.operator++(m); D) operator++(m);class fun{ public:.. .. ..fun operator +=(fun );friend fun operator ++(fun &,int);};答案:D7. 在第33题中,当执行语句d+=m; 时,C++编译器对语句作如下解释: (34)A. d=operator+=(m);B. m=operator+=(d);C. d.operator+=(m);D. m.operator+=(d);答案:C8. 设有以下类定义,其中说明了“+”运算符重载函数的原型。
java基础复习题
java基础复习题⼀、单项选择题1、在Java中,关于⽅法重载描述正确的是___D___A 如果两个⽅法名相同、参数项相同,则认为⼀个⽅法是另⼀个⽅法的重载⽅法B 如果两个⽅法名不同、参数项相同,则认为⼀个⽅法是另⼀个⽅法的重载⽅法C 如果两个⽅法名不同、参数项不同,则认为⼀个⽅法是另⼀个⽅法的重载⽅法D 如果两个⽅法名相同、参数项不同,则认为⼀个⽅法是另⼀个⽅法的重载⽅法2、在Java中,关于数组描述正确的是____B____A 数组中的索引下标从1开始B 存储在数组当中的数据都属于同⼀数据类型C 数组创建后其⼤⼩是可以改变的D 数组的最⼤索引下标与数组的长度相等3、给定如下Java代码,关于super的⽤法,以下___C_____哪个描述是正确的class C extends B{public C(){super();}}A ⽤来调⽤B类中定义的super()⽅法B ⽤来调⽤C类中定义的super()⽅法C ⽤来调⽤B类的⽆参构造⽅法//super:⽤作⽗类的D ⽤来调⽤B类的第⼀个出现的构造⽅法4、下列选项中关于this关键字说法正确的是___A_____A this关键字是在对象内部指代对象⾃⾝的引⽤//this:⽤作当前对象B this关键字可以在类中的任何位置使⽤C this关键字和类关联,⽽不是和特定的对象关联D 同⼀个类的不同对象公⽤同⼀个this5、有如下两个类Student和Person,如果Student是Person的⼦类,下列语句错误的是____C____A Person p=new Student();B Person p=new Person();C Student s=new Person();D Student s=new Student6、关于抽象类说法不正确的是 D 。
A 抽象类需要在class前⽤关键字abstract进⾏修饰B 抽象⽅法可以有⽅法体C 有抽象⽅法的类⼀定是抽象类D 抽象类可以没有抽象⽅法();7、关于接⼝说法错误的是___B_____A ⼀个类可以使⽤implements关键字实现多个接⼝,接⼝之间使⽤逗号进⾏间隔B ⼀个类实现接⼝时,必须实现接⼝中定义的所有⽅法C 不能对接⼝直接实例化D 接⼝中的⽅法都是未现的⽅法,且⽆需使⽤abstract关键字进⾏指明8、以下不属于引⽤类型的数据类型是___C___A 类B 数组型C 字符型D 接⼝9、JDK是指 A 。
函数重载练习题
函数重载练习题函数重载练习题1.请编写求两个数之和的函数,要求使用函数重载,能求整数、长整型、浮点、双精度等数的和。
请编写求两个数中最大数的函数,要求使用函数重载,能求两个整数、两个长整型、两个浮点、两个双精度等数的最大数。
(拓展版(内联))inline int max(int n, int m){return (m > n ? m : n);}inline double max(double n, double m){return (m > n ? m : n);}inline float max(float n, float m){return (m > n ? m : n);}2.3.编写一函数,使用函数重载,能求两个整数的最大数、三个整数的最大数、四个整数的最大数。
4.定义函数重载,分别将两个整数升序排列后输出、三个整数升序排列后输出、四个整数(忘了怎么用调用函数写重载了)升序排列后输出。
void f(int n, int m){if (m < n) { int t = m; m = n; n = t; }cout <<n<<'\t'<<m;< p="">cout << endl;}void f(int n, int m, int k){if (n > m) { int t = n; n = m; m = t; }if (n > k) { int t = n; n = k; k = t; }if (k < m) { int t = k; k = m; m = t; }cout <<n<<'\t'<<m<<'\t'<<k<< endl;<="" p="">}5.编写一个程序,包含三个重载的display函数和一个主函数。
java练习题及答案
练习题1.分别写出类、接口的关键字及对应继承关键字类的关键字:class接口的关键字:interface继承关键字:extends2.简要介绍方法的重载和覆盖的区别1、方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系。
2、覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。
3、覆盖要求参数列表相同;重载要求参数列表不同。
4、覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;重载关系,是根据调用时的实参表与形参表来选择方法体的。
3.什么是前期绑定?后期绑定?前期绑定;对于方法的重载,在程序编译时,根据调用语句中给出的参数,就可以决定在程序执行时调用同名方法的那个版本。
后期绑定:对于方法的覆盖,要在程序执行时,才能决定同名方法的版本。
4.方法重载的条件是?1.参数列表不同2.与返回类型无关3.函数名(方法名)相同5.Java中多态包括(方法的重载)、(方法的覆盖)。
6.解释import java.awt.*的含义。
引入awt这个包里所有的类7.修饰词final、static、abstract可以分别两两组合修饰类(F)8.Java是多继承(F)9.含有抽象方法的类就是接口(F)含有抽象方法的类是抽象类10.解释隐藏和覆盖隐藏:子类的成员变量和超类的成员变量同名时,超类的成员变量被隐藏。
覆盖:子类的成员方法和超类的成员方法同名时,超类的成员方法被子类的成员方法覆盖。
11.小应用程序公共类的类名可以与文件名不同名。
(F)12.小应用程序的公共类必须是(java.applet.Applet)的子类13.小应用程序中无main( )方法,它的执行比Application程序复杂。
(F)14.用javac编译appletfirst.java小应用程序后,用最少的代码写出aa.html内的文档内容,并写出执行aa.html的命令。
java方法重载练习题.doc
java方法重载练习题public class FunctionOverload public static void main(print;int suml - sum;print;print;int sum- sum;print;print;double sum- sum;print;print;printCFB;print;printCFB;}〃两个整数求和public static int sum{return a + b;//三个整数求和public static int sum{ return a + b + c;}〃两个小数求和public static double sum{ return a + b;}〃打印乘法表到不确定的一个数public static void printCFB { for {for {System, out. print;}System, out. printin;}1〃打印九九乘法表public static void printCFB{ printCFB;//输出函数public static void print (System, out. printin;}}2练习六1、为了区分重载多态中同名的不同方法,要求。
A)采用不同的参数列表B)返回值类型不同0调用时用类名或对象名做前缀D)参数名不同2、定义主类的类头时可以使用的访问控制符是。
A)privateB) protectedC) publicD) private protected3、下列整型的最终属性i的定义中,正确的是。
A)static final int i-100:B) final int i:C) static int i:D) final float i-1. 2f:4、设x, y均为己定义的类名,下列声明对象xl的语句中正确的是。
A)public x xl- new y; B) x xl-x:C) x xl-new x; D) int x xl:5、下列方法定义中,正确的是。
方法的定义、方法的重载及练习代码
⽅法的定义、⽅法的重载及练习代码java的⽅法java⽅法是语句的集合,他们在⼀起执⾏⼀个功能⽅法是解决⼀类问题的步骤的有序组合⽅法包含于类或对象中⽅法在程序中被创建,在其它地⽅引⽤重点:设计⽅法的原则,⽅法的本意是功能块,就是实现某个功能语句块的集合,我们设计⽅法的时候,最好保持⽅法的原⼦性,就是⼀个⽅法只完成⼀个功能,只有利于我们后期的扩展。
⽅法的命名规则:⾸字母⼩写,后⾯采⽤驼峰原则。
⽅法的定义java的⽅法类似于其它语⾔的函数,是⼀段⽤来完成特定功能的代码⽚段,⼀般情况下,定义⼀个⽅法包含以下语法:⽅法包含⼀个⽅法头和⼀个⽅法体。
下⾯是⽅法体的所有部分:修饰符:修饰符,这是可选的,告诉编译器如何调⽤该⽅法。
定义了该⽅法的访问类型。
返回值类型:⽅法可能会返回值,returnValueType是⽅法返回值的数据类型。
有些⽅法执⾏所需的操作,但没有返回值。
这种情况下,returnValueType是关键字void。
⽅法名:是⽅法的实际名称。
⽅法名和参数表共同构成⽅法签名。
数据类型:参数像是⼀个占位符。
当⽅法被调⽤时,传递值给参数。
这个值被称为实参或变参。
参数列表是指⽅法的参数类型、参数顺序和参数的个数。
参数是可选的,⽅法可以不包含任何参数。
形式参数:在⽅法被调⽤时⽤于接收外界输⼊的数据。
(起定义作⽤)实参:调⽤⽅法时实际传给⽅法的数据。
(给形式参数赋值的参数)⽅法体:⽅法体包含具体的语句,定义该⽅法的功能。
语法:修饰符返回值类型⽅法名(参数类型参数名){。
⽅法体。
return 返回值;}return的⽤法:return是结束本⽅法return之后的内容,返回主⽅法,继续往下执⾏,如果main⽅法没有东西就结束程序,如果return在main⽅法⾥⾯程序就直接结束了。
练习代码:package methed;import com.sun.xml.internal.ws.wsdl.writer.document.StartWithExtensionsType;public class Demo01 {//main⽅法 public static 代表修饰符,void 代表不返回值 main最底层public static void main(String[] args) {// int sum = add(1,2);// System.out.println(sum);//直接调⽤执⾏下⾯的⽅法test();}//加法public static int add(int a,int b){return a+b ;}//创建⼀个test⽅法public static void test(){for (int i = 0; i <= 1000; i++) {//1000.forif (i%5==0){System.out.print(i+"\t");//输出结果i+空格}if (i%15==0){System.out.println();//换⾏}}}}package methed;public class Demo02 {public static void main(String[] args) {//实参,使⽤int max = max(10,10);System.out.println(max);}//⽐⼤⼩//形式参数,定义public static int max(int num1,int num2){int i = 0;if (num1==num2){System.out.print("num1==num2,都为:");return (num1+num2)/2;//终⽌⽅法}if (num1>num2){i = num1;}else{i = num2;}return i;}}⽅法的重载重载就是在⼀个类中,有相同的函数名称,但形参不同的函数。
C++中的运算符重载练习题
C++中的运算符重载练习题1.RMB类要求:定义⼀个RMB类 Money,包含元、⾓、分三个数据成员,友元函数重载运算符‘+’(加)和 ‘-’(减),实现货币的加减运算例如:请输⼊元、⾓分:2 3 4请输⼊元、⾓分:3 7 3和:6元0⾓7分差:-1元3⾓9分⼜例如:请输⼊元、⾓分:2 3 4请输⼊元、⾓分:3 0 0和:4元6⾓0分差:-0元6⾓6分代码实现:1 #include <iostream>2using namespace std;34class Money5 {6private:7int yuan, jiao, fen;8bool flag; //标志位,0表⽰钱数为正,1表⽰钱数为负 -> 默认结果的钱数为正9public:10 Money();11 Money(int fg, int y=0, int j=0, int f=0): yuan(y), jiao(j), fen(f), flag(fg){}12 friend Money operator+(Money a, Money b);13 friend Money operator-(Money a, Money b);14void display();1516 };1718 Money::Money()19 {20 flag = 0;21 cout << "请输⼊元、⾓分:" <<endl;22 cin >> yuan >> jiao >> fen;23 }2425void Money::display()26 {27if(flag==1) cout << '-';28 cout << yuan << "元" << jiao << "⾓" << fen << "分" << endl;29 }3031//请⽤友元函数重载加/减,并要在类Money中声明为友元32//TODO重载加类外定义Money类的+重载运算33 Money operator+(Money a, Money b)34 {35 Money temp(0);36// 将钱全部转化成分来计算37int money_a = a.yuan*100 + a.jiao*10 + a.fen*1;38int money_b = b.yuan*100 + b.jiao*10 + b.fen*1;39int res = money_a + money_b;40// 因为是相加故应该结果是正的所以不⽤判断符号但是相减时结果可能为负就要判断符号41 temp.yuan = res/100;42 res = res % 100;43 temp.jiao = res/10;44 temp.fen = res % 10;4546// 返回结果对象47return temp;48 }4950//TODO重载减类外定义Money类的-重载运算51 Money operator-(Money a, Money b)52 {53 Money temp(0);54// 将钱全部转化成分来计算55int money_a = a.yuan*100 + a.jiao*10 + a.fen*1;56int money_b = b.yuan*100 + b.jiao*10 + b.fen*1;57int res = money_a - money_b;58// 因为是相减时结果可能为负就要判断符号59if(res < 0)60 {61 temp.flag = 1;62 res = -res;63 }64 temp.yuan = res/100;65 res = res % 100;66 temp.jiao = res/10;67 temp.fen = res % 10;6869// 返回结果对象70return temp;71 }7273int main()74 {75 Money m1, m2, m3(0), m4(0); //m3⽤来记录和,m4⽤来记录差7677// +78 m3=m1+m2;79 cout<<"和:";80 m3.display();8182// -83 m4=m1-m2;84 cout<<"差:";85 m4.display();8687return0;88 }2.⽇期类运算符重载要求:定义⼀个⽇期类Date,包含年、⽉、⽇三个数据成员友元函数重载⾃增运算符(++),实现⽇期的⾃增。
java重载选择题
以下是一些关于Java重载(Overloading)的选择题。
请注意,这些题目是为了帮助您理解Java的重载概念,可能不包括所有可能的细节和边缘情况。
1.在Java中,方法重载(Overloading)是:A. 在同一类中定义多个方法,它们具有相同的名称但参数列表不同。
B. 在同一类中定义多个方法,它们具有相同的名称和参数列表。
C. 在不同类中定义多个方法,它们具有相同的名称和参数列表。
D. 在不同类中定义多个方法,它们具有相同的名称但参数列表不同。
答案:A2.下列哪个描述正确地说明了Java中的方法重载?A. 方法重载允许改变方法的返回类型。
B. 方法重载允许改变方法的访问修饰符。
C. 方法重载允许改变方法的参数类型和数量。
D. 方法重载允许改变方法的名称。
答案:C3.在Java中,以下哪个选项展示了正确的方法重载?A. void show(int a) 和void show(double a)B. void show(int a) 和int show(int a)C. void show(int a) 和void show(int a, int b)D. void show(int a) 和void Show(int a)答案:C4.下列关于Java方法重载的说法中,正确的是:A. 重载方法可以改变方法的访问权限。
B. 重载方法可以抛出不同的异常。
C. 重载方法可以返回不同的数据类型。
D. 重载方法的返回类型必须相同。
答案:B5.在Java中,以下哪项不能用于区分重载的方法?A. 方法的参数类型B. 方法的参数数量C. 方法的返回类型D. 方法的参数顺序答案:C。
Java语言程序设计(一)课后习题第六章(附答案)
·getlmaginaryPart()获得复数对象的虚部。
·setRealPart(doubled)把当前复数对象的实部设置为给定的形参的数字。
·setlmaginaryPart(doubled)把当前复数对象的虚部设置为给定形参的数字。
·complexAdd(ComplexNumberc)当前复数对象与形参复数对象相加,所得的结果也是复数值,返回给此方法的调用者。
+ cNumber_2.toString() + “等于“
+ cNumber_plexMinus(cNumber_2).toString());
System.out.println(cNumber_1.toString() + “减“
+ d + “等于“
+ cNumber_plexMinus(d).toString());
System.out.println(cNumber_1.toString() + “乘“
+ cNumber_2.toString() + “等于“
+ cNumber_plexMulti(cNumber_2).toString());
System.out.println(cNumber_1.toString() + “乘“
{
public abstract string subMethod();
}
参考答案:
1. trueLeabharlann 2.A3.答:子类重新定义父类中已经存在的方法,称为方法的覆盖。注意:方法覆盖与域的隐藏不同。子类重新定义父类已有的域,并不能完全取代它从父类那里继承的同名的域,这个域仍然占用子类的内存空间,在某些情况下会被使用;而当子类重新定义父类的方法时,从父类那里继承来的方法将被新方法完全取代,不再在子类的内存空间中占一席之地。与方法的覆盖不同,重载不是子类对父类同名方法的重新定义,而是在一个类中定义了同名的不同方法。
运算符重载综合练习题
运算符重载练习题一、选择题1、在C++中不能重载的运算符是()。
A、=B、()C、::D、delete2、在C++中不能重载的运算符是()。
A、?:B、[ ] C 、new D、&&3、下列关于C++运算符重载函数的返回类型的描述中,错误的是()。
A、可以是类类型B、可以是int 型C、可以是void型D、可以是float型4、下列运算符不能用成员函数重载的是()。
A、+B、—C、*D、<<5、在重载运算符时,必须重载为类的成员函数的运算符是()。
A、+B、—C、++D、->6、下列关于运算符重载的描述中,正确的是()。
A、运算符重载可以改变运算符的操作个数B、运算符重载可以改变运算符的优先级C、运算符重载可以改变运算符的结合性D、运算符重载不可以改变运算符的语法结构7、友元运算符obj1>obj2被C++编译器解释为()。
A、operator>(obj1,obj2)B、>(obj1,obj2)C、obj2.operator>(obj1)D、obj1.operator>(obj2)8、在表达式x+y*z中,+作为成员函数重载的运算符,*作为非成员函数重载的运算符。
下列叙述中正确的是()。
A、opertator+有两个参数,opertator*有两个参数B、opertator+有两个参数,opertator*有一个参数C、opertator+有一个参数,opertator*有两个参数D、opertator+有一个参数,opertator*有一个参数9、重载赋值运算符时,应声明为重载的()函数。
A、友元B、虚C、成员D、多态10、在一个类中,可以对一个操作符进行()重载。
A、1种B、2种以下C、3种以上D、多种11、在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是().A、作为友员函数重载的一元运算符B、作为成员函数重载的一元运算符C、作为友员函数重载的二元运算符D、作为友员函数重载的二元运算符12、在成员函数中进行双目运算符重载时,其参数表中应带有()个参数。
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)的方法。
方法重载练习题
方法重载练习题方法重载(Method Overloading)是指在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或参数类型不同即可。
通过方法重载,可以提高程序的灵活性和可读性,使代码更加简洁和高效。
下面是一些方法重载的练习题,通过完成这些题目,可以帮助巩固对方法重载的理解和运用。
1. 编写一个名为"sum"的方法,计算两个整数的和,并打印结果。
2. 在上述"sum"方法的基础上,重载该方法,使之能够计算三个整数的和,并打印结果。
3. 编写一个名为"average"的方法,计算两个浮点数的平均值,并返回结果。
4. 在上述"average"方法的基础上,重载该方法,使之能够计算三个浮点数的平均值,并返回结果。
5. 编写一个名为"concatenate"的方法,将两个字符串连接起来,并返回结果。
6. 在上述"concatenate"方法的基础上,重载该方法,使之能够连接三个字符串,并返回结果。
7. 编写一个名为"findMax"的方法,接受两个整数参数,返回其中较大的一个。
8. 在上述"findMax"方法的基础上,重载该方法,使之能够接受三个整数参数,返回其中较大的一个。
9. 编写一个名为"findMax"的方法,接受两个浮点数参数,返回其中较大的一个。
10. 在上述"findMax"方法的基础上,重载该方法,使之能够接受三个浮点数参数,返回其中较大的一个。
11. 编写一个名为"power"的方法,接受一个整数参数和一个指数参数,计算整数的指定次幂,并返回结果。
12. 在上述"power"方法的基础上,重载该方法,使之能够接受一个浮点数参数和一个指数参数,计算浮点数的指定次幂,并返回结果。
java试题
java试题第⼆次课外作业(请于第⼗⼀周11⽉11⽇前,上传电⼦⽂档到对应⼩课⽼师的ftp://172.16.3.240⽬录下)⼀、思考题1.Overload(⽅法重载)和Override(⽅法覆盖)的区别。
答:⽅法重载是指在⼀个类中,多个⽅法之间⽅法名相同,⽅法的参数类型或个数不同。
覆盖是通过继承和虚⽅法来实现的。
虚⽅法是指在⽅法声明时加上virtual修饰符。
覆盖需要⽅法名、⽅法参数类型、⽅法参数个数、返回值类型与基类中的虚⽅法完全⼀样。
在派⽣类中重载虚⽅法要加上override修饰符。
重载与覆盖之间的主要区别:1.重载要求⽅法名相同⽽⽅法参数类型或个数不同;覆盖是⽅法名、参数类型和个数都相同。
2.重载是在同⼀个类中的不同⽅法之间;覆盖是⼦类继承⽗类,⼦类⽅法override⽗类⽅法。
3.重载是在编译时决定;覆盖是在运⾏时决定。
2.在创建派⽣类的对象的时候,基类与派⽣类中构造⽅法的调⽤顺序怎样?答:先调⽤基类的构造⽅法,后调⽤派⽣类的构造⽅法3.⽐较this和super的区别答:1)super(参数):调⽤⽗类的构造⽅法。
2)this(参数):调⽤本类的其他构造⽅法。
3)都必须放在构造⽅法的第⼀⾏。
3)super:引⽤⽗类中的成员,当⼦类和⽗类中的⽅法重名时,这样⽤。
4)this:代表当前对象名(在程序中易产⽣⼆义性之处,应使⽤this来指明当前对象;如果函数的形参与类中的成员数据同名,这时需⽤this来指明成员变量名)。
5)this()和super()都指的是对象,所以,均不能在static环境中使⽤。
包括:static变量,static ⽅法,static语句块。
6)从本质上讲,this是⼀个指向本对象的指针, 然⽽super是⼀个Java关键字。
4.什么是多态?⾯向对象程序设计为什么要引⼊多态的特性?使⽤多态有什么优点?答:多态是指类的属性或功能在各个⼦类中可以具有彼此不同的具体形态。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一.选择题
1.下列方法定义中,正确的是( )。
A)int x( int a,b ) { return (a-b); }
B)double x( int a,int b) { int w; w=a-b; }
C)double x( a,b ) { return b; }
D)nt x( int a,int b) { return a-b; }
2.下列方法定义中,正确的是( )。
A)void x( int a,int b ); { return (a-b); }
B)x( int a,int b) { return a-b; }
C)double x { return b; }
D)int x( int a,int b) { return a+b; }
3.下列方法定义中,不正确的是( )。
A)float x( int a,int b ) { return (a-b); }
B)int x( int a,int b) { return a-b; }
C)int x( int a,int b ) { return a*b; }
D)int x(int a,int b) { return 1.2*(a+b); }
4.下列方法定义中,正确的是( )。
A)int x( ){ char ch='a'; return (int)ch; }
B)void x( ){ ...return true; }
C)int x( ){ ...return true; }
D)nt x( int a, b){ return a+b; }
5.下列方法定义中,方法头不正确的是( )。
A)public int x( ){ ... }
B)public static int x( double y ){ ... }
C)void x( double d ) { ... }
D)public static x( double a ){ ... }
6.在某个类中存在一个方法:void getSort(int x),以下能作为这个方法的重载的声明的是( )。
A)public getSort(float x) B)int getSort(int y)
C)double getSort(int x,int y) D)void get(int x,int y)
7.在某个类中存在一个方法:void sort(int x),以下不能作为这个方法的重载的声明的是( )。
A)public float sort(float x) B)int sort(int y)
C)double sort(int x,int y) D)void sort(double y)
8.为了区分类中重载的同名的不同方法,要求( )。
A)采用不同的形式参数列表B)返回值类型不同
C)调用时用类名或对象名做前缀D)参数名不同
二.填空题
1.以下方法fun的功能是求两参数之积。
int fun ( int a, int b ) { __________________; }
2.以下方法fun的功能是求两参数之积。
float fun ( int a, double b ) { __________________; }
3.以下方法fun的功能是求两参数的最大值。
int fun ( int a, int b ) { __________________; }
4.以下方法m的功能是求两参数之积的整数部分。
int m ( float x, float y ) { __________________; }
5.下面方法的功能是判断一个整数是否为偶数,将程序补充完整。
public ________ isEven(int a)
{ if(a%2==0)
return _____;
else
return false;
}
6.同一个类中多个方法具有相同的方法名,不同的_____________称为方法的重载。
三编程题
1.编写一个方法将华氏温度转换成摄氏温度,同时在main方法中调用该方法将转换成的摄氏温度在屏幕上显示出来:
转换公式为:摄氏度=(5/9)*(华氏度-32)
2. 编写方法,判断一个数是否是水仙花数。
水仙花数是指个位、十位和百位三个数的立方和等于这个三位数本身的数。
使用如下方法说明:boolean isShuiXianHua(int n)。
并在main 方法中调用该方法打印输出所有的水仙花数。
3. 利用方法重载的概念,写三个方法分别求int型数据的绝对值,float型数据的绝对值和
double型数据的绝对值。
四挑战题
1. 编写一个方法打印a行的三角形。
例如当a=3时,打印出如下图形。
然后在main方法中
调用方法,打印出a=8时的图形。
*
**
***
2.编写一个方法求a+aa+aaa+…+a..a(n个)的和,其中a为1~9之间的整数,例如,如当a=3、n=4时,求3+33+333+3333的和。
然后在main方法中利用该方法求a=4,n=5时的和,并输出到显示器上。