阿里巴巴编程笔试题目分析:继承与成员变量输出
5星 · 超过95%的资源 需积分: 9 87 浏览量
更新于2024-09-13
收藏 254KB DOC 举报
"阿里巴巴笔试题主要考察了Java编程的基础知识,包括类继承、方法调用和访问修饰符。以下是针对提供的代码段进行的详细解析:"
1. 选择题内容分析:
这段代码包含两个类,`Base` 和 `Derived`。`Base` 类定义了一个整型变量 `i` 被初始化为 99,并有一个名为 `amethod()` 的公共方法,用于打印 "Base.amethod()"。在 `Base` 类的构造函数中,会调用 `amethod()`。
`Derived` 类继承自 `Base`,并在继承时重写了 `i` 变量,将其值设为 -1。`Derived` 类还定义了一个公共静态方法 `main()`,在其中创建了一个 `Derived` 类的实例 `b` 并将其赋值给 `Base` 类型的引用。然后,程序试图打印 `b.i` 的值以及调用 `b.amethod()`。
关键知识点:
- 继承:`Derived` 类通过关键字 `extends` 继承了 `Base` 类,这使得 `Derived` 类可以访问 `Base` 类中的成员。
- 字段覆盖(字段重载):`Derived` 类中的 `i` 变量覆盖了父类 `Base` 中同名的变量,因为它们都是实例变量(non-static)且类型相同。
- 方法覆盖(方法重写):`Derived` 类中的 `amethod()` 方法覆盖了 `Base` 类的同名方法,这意味着 `Derived` 类实例调用 `amethod()` 时,执行的是 `Derived` 类的方法,输出 "Derived.amethod()"。
- 构造函数和方法调用:在 `Derived` 类的 `main()` 方法中,虽然 `b` 是 `Base` 类型的引用,但因为 `Derived` 类实例化后,`Base` 类的构造函数会被自动调用,所以 `amethod()` 方法也会执行,输出 "Base.amethod()"。
答案选项分析:
- A 选项 "Derived.amethod() -1 Derived.amethod()" 提供的信息不完整,应该仅包含两次调用的输出,而不是值。
- B 选项 "Derived.amethod()" 只包含了 `Derived` 类的 `amethod()` 被调用后的输出,忽略了初始 `b.i` 的值。
正确答案应该是:A 选项表示先输出 `Base.amethod()`,然后输出 `Derived.amethod()`,由于 `b` 是 `Derived` 实例,最后 `i` 的值为 -1。因此,完整的输出应是:"Base.amethod()" 和 "Derived.amethod()",之后跟随 `-1`。
总结:这个题目旨在测试候选人的面向对象编程理解,特别是关于类继承和方法调用的概念,以及如何在不同层次的类中正确调用和覆盖方法。
2011-12-02 上传
2014-03-28 上传
2012-03-20 上传
2015-08-21 上传
2014-07-24 上传
2013-10-07 上传
2009-12-10 上传
Gaoyang27
- 粉丝: 0
- 资源: 52
最新资源
- Fisher Iris Setosa数据的主成分分析及可视化- Matlab实现
- 深入理解JavaScript类与面向对象编程
- Argspect-0.0.1版本Python包发布与使用说明
- OpenNetAdmin v09.07.15 PHP项目源码下载
- 掌握Node.js: 构建高性能Web服务器与应用程序
- Matlab矢量绘图工具:polarG函数使用详解
- 实现Vue.js中PDF文件的签名显示功能
- 开源项目PSPSolver:资源约束调度问题求解器库
- 探索vwru系统:大众的虚拟现实招聘平台
- 深入理解cJSON:案例与源文件解析
- 多边形扩展算法在MATLAB中的应用与实现
- 用React类组件创建迷你待办事项列表指南
- Python库setuptools-58.5.3助力高效开发
- fmfiles工具:在MATLAB中查找丢失文件并列出错误
- 老枪二级域名系统PHP源码简易版发布
- 探索DOSGUI开源库:C/C++图形界面开发新篇章