Java编程题(五)

一、选择题(每题3分,共45分)
题目-1 以下构造的描述错误的是
选项 A 构造方法是新建对象时执行的一个特殊方法
B 构造一个对象之后,立即执行的一个方法
C 一个类,必须有构造方法
D 如果自己不定义,编译器不会添加默认构造方法
答案 D
解析 D选项如果自己不定义,编译器会添加默认构造方法

题目-2 this.xxx的讲述错误的是
选项 A this 特殊引用,引用当前对象的地址
B this.xxx 调用成员
C 当有重名局部变量,必须用this.xx调用成员变量
D this.xxx就是xxx是当前变量值
答案 D
解析 D选项是调用当前活动对象的成员变量

题目-3 关于重载的描述错误的是( )
选项 A 重载是面向对象的一个基本特性
B 重载就是在一个类中,有相同的方法名称,但形参不同的方法
C 重载的结果,可以让一个程序段尽量减少代码和方法的种类。
D 跟成员方法一样,构造方法不可以重载
答案 D
解析 跟成员方法一样,构造方法也可以重载(参数类型或者参数个数不同)

题目-4 下面的方法重载,正确的是
选项 A int fun(int a, float b) { }
float fun(int a, float b) { }
B float fun(int a, float b) { }
float fun(int x, float y) { }
C float fun(float a) { }
float fun(float a, float b) { }
D float fun1(int a, float b) { }
float fun2(int a, float b) { }
答案 C
解析 方法重载是两个方法同名不同参,不同参包括:参数个数不同,参数顺序不同,参数类型不同

题目-5 分析选项中关于Java中this关键字的说法正确的是
选项 A this关键字是在对象内部指代自身的引用
B this关键字可以在类中的任何位置使用
C this关键字和类关联,而不是和特定的对象关联
D 同一个类的不同对象共用一个this
答案 A
解析 B选项并不可在类里置使用C选项this并不是和类型关联,D选项不同对象并不共用一个this

题目-6 在JAVA中关于继承的描述错误的是
选项 A 继承的作用是代码重用、复用
B 不继承构造方法和私有(private)成员
C 一个子类,只能继承一个父类
D 一个父类,只有一个子类
答案 D
解析 D选项一个父类,可以有多个子类

题目-7 关于继承下面说法正确的是
选项 A 子类能够继承父类私有的属性;
B 子类可以继承父类的私有的属性和方法
C 子类可以继承父类的公有的属性和方法
D 创建子类对象时,父类的构造方法都要被执行
答案 C
解析 A子类不能继承父类的私有属性,B子类不可以继承父类的私有属性,D选项创建子类对象时,父类的构造方法没有被全部执行

题目-8 现有两个类A、B,以下描述中表示B继承自A的是?
选项 A class A extends B
B class B implements A
C class A implements B
D class B  extends  A
答案 D
解析 A选项是A继承B,BC选项是实现不是继承

题目-9 关于继承的描述错误的是
选项 A 继承是java的三大特性之一
B java支持多继承,即一个子类只能拥有多个父类
C 子类对象实例化时一定先实例化父类对象
D 继承需要符合的关系是:is-a,父类更通用,子类更具体。
答案 B
解析 java不支持多继承,即一个子类只能拥有一个父类。

题目-10 设有下面两个类的定义。 
class Person { 
 long id; // 身份证号  String name; // 姓名 
} 
class Student extends Person {  
int score; // 入学总分
 }
则类Person和类Student的关系是?
选项 A 包含关系
B 继承关系
C 关联关系
D 以上说法都错误
答案 B
解析 extends是继承的关键字

题目-11 Java语言的类间的继承关系是( )
选项 A 多重的
B 单重的
C 线程的
D 不能继承
答案 B
解析 类间的继承关系是单重的

题目-12 以下关于Java语言继承的说法正确的是
选项 A Java中的类可以有多个直接父类
B 抽象类不能有子类
C Java中的接口支持多继承
D 最终类可以作为其它类的父类
答案 C
解析 A选项类是单继承,B选项是抽象类可以有子类,D选项标志为final的类不能被继承,所以不能作为其他类的父类,典型代表就是String类

题目-13 关于继承的说法正确的是:
选项 A 子类将继承父类所有的属性和方法。
B 子类将继承父类的非私有属性和方法。
C 子类只继承父类public方法和属性
D 子类只继承父类的方法,而不继承属性
答案 B
解析 子类可以获得除private权限以外的所有父类属性

题目-14 以下关于this和super,说法正确的是( )
选项 A 都可以用在main()方法中
B 都是指一个内存地址
C 不能用在main()方法中
D 意义相同
答案 C
解析 A都不可以用在main方法中,main()方法是静态的,this是本类对象的引用,静态先于对象,所以是不能使用的。
this通常指当前对象,super则指父类的。Bthis是当前对象的引用,super是对象父类的引用。D意义不同

题目-15 为了区分类中重载的同名的不同方法,要求( )
选项 A 参数列表不同
B 调用时用类名或对象名做前缀
C 参数名不同
D 返回值类型不同 
答案 A
解析 重载是同名不同参,返回值类型可以不同也可以相同

二、简答题(1题15分,23题各20分)
1.谈谈java跟你所知道的其它的语言相比,有什么优点?
答案:Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言。Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
Java是功能完善的通用程序设计语言,可以用来开发可靠的、要求严格的应用程序。
java是纯面向对象开发,功能强大,分支众多,没有java不能做的软件。C/S也好B/S也好。从功能上讲,没有语言可以和java相比。
C是面向过程编程的,这样往往会导致所谓的单一程序,既所有的功能只能包含在几个(通常是一个)代码模块中。当然,C语言也有自身的不足,比如:C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数族下标越界不作检查等。从应用的角度,C语言比其他高级语言较难掌握。
解析:Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言。Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
Java是功能完善的通用程序设计语言,可以用来开发可靠的、要求严格的应用程序。
java是纯面向对象开发,功能强大,分支众多,没有java不能做的软件。C/S也好B/S也好。从功能上讲,没有语言可以和java相比。
C是面向过程编程的,这样往往会导致所谓的单一程序,既所有的功能只能包含在几个(通常是一个)代码模块中。当然,C语言也有自身的不足,比如:C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数族下标越界不作检查等。从应用的角度,C语言比其他高级语言较难掌握。

2.谈谈你对面向对象的理解
答案:所谓的面向对象就是将我们的程序模块化,对象化,把具体事物的特性属性和通过这些属性来实现一些动作的具体方法放到一个类里面,这就是封装。封装是我们所说的面相对象编程的特征之一。除此之外还有继承和多态。继承有点类似与我们生物学上的遗传,就是子类的一些特征是来源于父类的,儿子遗传了父亲或母亲的一些性格,或者相貌,又或者是运动天赋。有点种瓜得瓜种豆得豆的意思。面向对象里的继承也就是父类的相关的属性,可以被子类重复使用,子类不必再在自己的类里面重新定义一回,父类里有点我们只要拿过来用就好了。而对于自己类里面需要用到的新的属性和方法,子类就可以自己来扩展了。当然,会出现一些特殊情况,就是我们在有一些方法在父类已经定义好了,但是子类我们自己再用的时候,发现,其实,我们的虽然都是计算工资的,但是普通员工的工资计算方法跟经理的计算方法是不一样的,所以这个时候,我们就不能直接调用父类的这个计算工资的方法了。这个时候我们就需要用到面向对象的另一个特性,多态。对,就是多态,我们要在子类里面把父类里面定义计算工资的方法在子类里面重新实现一遍。多态包含了重载和重写。重写很简单就是把子类从父亲类里继承下来的方法重新写一遍,这样,父类里相同的方法就被覆盖了,当然啦,你还是可以通过super.CaculSalary方法来调用父类的工资计算方法。而重载就是类里面相同方法名,不同形参的情况,可以是形参类型不同或者形参个数不同,或者形参顺序不同,但是不能使返回值类型不同。
解析:所谓的面向对象就是将我们的程序模块化,对象化,把具体事物的特性属性和通过这些属性来实现一些动作的具体方法放到一个类里面,这就是封装。封装是我们所说的面相对象编程的特征之一。除此之外还有继承和多态。继承有点类似与我们生物学上的遗传,就是子类的一些特征是来源于父类的,儿子遗传了父亲或母亲的一些性格,或者相貌,又或者是运动天赋。有点种瓜得瓜种豆得豆的意思。面向对象里的继承也就是父类的相关的属性,可以被子类重复使用,子类不必再在自己的类里面重新定义一回,父类里有点我们只要拿过来用就好了。而对于自己类里面需要用到的新的属性和方法,子类就可以自己来扩展了。当然,会出现一些特殊情况,就是我们在有一些方法在父类已经定义好了,但是子类我们自己再用的时候,发现,其实,我们的虽然都是计算工资的,但是普通员工的工资计算方法跟经理的计算方法是不一样的,所以这个时候,我们就不能直接调用父类的这个计算工资的方法了。这个时候我们就需要用到面向对象的另一个特性,多态。对,就是多态,我们要在子类里面把父类里面定义计算工资的方法在子类里面重新实现一遍。多态包含了重载和重写。重写很简单就是把子类从父亲类里继承下来的方法重新写一遍,这样,父类里相同的方法就被覆盖了,当然啦,你还是可以通过super.CaculSalary方法来调用父类的工资计算方法。而重载就是类里面相同方法名,不同形参的情况,可以是形参类型不同或者形参个数不同,或者形参顺序不同,但是不能使返回值类型不同。

3.说说重载和重写的区别
答案:Overload是重载的意思,表示在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可,Override是覆盖的意思,也就是重写,它与返回值类型无关,只看参数列表,两者不同主要体现在:目的不同、范围不同、参数不同、多态性不同、返回类型不同。
1、目的不同
overload用于增加程序的可读性(做法不同,但是做的同一事情)。 override用于提供其超级类已经提供的方法的特定实现。
2、范围不同
overload 在相同的类范围内内执行。 override发生在两类具有继承(继承)的关系。
3、参数不同
overload参数必须不同。 override参数必须相同。
解析:Overload是重载的意思,表示在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可,Override是覆盖的意思,也就是重写,它与返回值类型无关,只看参数列表,两者不同主要体现在:目的不同、范围不同、参数不同、多态性不同、返回类型不同。
1、目的不同
overload用于增加程序的可读性(做法不同,但是做的同一事情)。 override用于提供其超级类已经提供的方法的特定实现。
2、范围不同
overload 在相同的类范围内内执行。 override发生在两类具有继承(继承)的关系。
3、参数不同
overload参数必须不同。 override参数必须相同。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值