Java继承与多态:阿里面试题解析
需积分: 0 75 浏览量
更新于2024-09-11
收藏 258KB DOC 举报
"阿里面试题"
在阿里集团的面试中,可能会遇到类似如下的编程题目,主要考察的是面向对象编程的基础知识,特别是继承、构造器以及方法重写的概念。题目给出了一段Java代码,包含一个基类`Base`和一个派生类`Derived`。现在我们来详细分析这段代码及其运行结果。
首先,我们看代码的结构:
1. `Base`类有一个整型变量`i`初始化为99,并且有一个名为`amethod`的方法,该方法打印出"Base.amethod()"。
2. `Base`类的构造器调用了`amethod`方法。
3. `Derived`类继承了`Base`类,同样有一个整型变量`i`初始化为-1,也重写了`amethod`方法,打印出"Derived.amethod()"。
4. `Derived`类有一个`main`方法,用于程序的入口。在`main`方法中,创建了一个`Derived`类型的对象`b`,但是通过`Base`类的引用来访问它。然后打印`b.i`的值,并调用`b.amethod()`。
当尝试编译并运行这段代码时,我们需要考虑以下几点:
- 类`Derived`继承了类`Base`,所以`Derived`的对象可以被视为`Base`类型的对象。这就是为什么可以在`main`方法中使用`Base`类型的引用`b`来创建一个`Derived`对象。
- 当创建`Derived`对象时,会先执行`Base`类的构造器,因为这是继承链上的父类构造器。在`Base`的构造器中,调用了`amethod()`,由于此时对象实际上是`Derived`类型,因此会调用`Derived`类中重写的方法,打印"Derived.amethod()"。
- 接下来,`System.out.println(b.i)`会打印`b`对象的`i`变量的值。虽然`b`是`Base`类型的引用,但它指向的是`Derived`对象,因此会打印`Derived`类中的`i`值,即-1。
根据以上分析,我们可以得出正确的运行结果:
- `b.i`的值为-1,因为`b`实际上是一个`Derived`对象,即使它是通过`Base`类型引用的。
- 调用`b.amethod()`会执行`Derived`类中的`amethod`方法,因为这是覆盖了`Base`类的方法。因此,会打印"Derived.amethod()"。
所以,正确答案应该是:`Derived.amethod() -1 Derived.amethod()`。然而,由于原始问题的选项格式不完整,无法确定具体选项。但根据我们的分析,选项应对应于上述的运行顺序。
2012-11-08 上传
2019-10-22 上传
2020-02-28 上传
2022-08-28 上传
2012-02-05 上传
2021-07-16 上传
2022-03-10 上传
leokelly001
- 粉丝: 41
- 资源: 31
最新资源
- 黑板风格计算机毕业答辩PPT模板下载
- CodeSandbox实现ListView快速创建指南
- Node.js脚本实现WXR文件到Postgres数据库帖子导入
- 清新简约创意三角毕业论文答辩PPT模板
- DISCORD-JS-CRUD:提升 Discord 机器人开发体验
- Node.js v4.3.2版本Linux ARM64平台运行时环境发布
- SQLight:C++11编写的轻量级MySQL客户端
- 计算机专业毕业论文答辩PPT模板
- Wireshark网络抓包工具的使用与数据包解析
- Wild Match Map: JavaScript中实现通配符映射与事件绑定
- 毕业答辩利器:蝶恋花毕业设计PPT模板
- Node.js深度解析:高性能Web服务器与实时应用构建
- 掌握深度图技术:游戏开发中的绚丽应用案例
- Dart语言的HTTP扩展包功能详解
- MoonMaker: 投资组合加固神器,助力$GME投资者登月
- 计算机毕业设计答辩PPT模板下载