【Java练习题】Java程序的输出 | 第二套(含解析)

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 【Java练习题】Java程序的输出 | 第二套(含解析)

难度级别: 简单

预测以下 Java 程序的输出。

考虑到如果将答案紧接着问题贴出来,同学们可能还没思考就不小心看到了结果,所以我把问题和答案分开放,中间还用东西挡了一下,希望不会给大家带来阅读上的困难

问题

问题一:

package main;
class Base {
  public void Print()
  {
    System.out.println("Base");
  }
}
class Derived extends Base {
  public void Print()
  {
    System.out.println("Derived");
  }
}
class Main {
  public static void DoPrint(Base o)
  {
    o.Print();
  }
  public static void main(String[] args)
  {
    Base x = new Base();
    Base y = new Derived();
    Derived z = new Derived();
    DoPrint(x);
    DoPrint(y);
    DoPrint(z);
  }
}

点此跳转到答案

问题二:

package main;
// filename Main.java
class Point {
  protected int x, y;
  public Point(int _x, int _y)
  {
    x = _x;
    y = _y;
  }
}
public class Main {
  public static void main(String args[])
  {
    Point p = new Point();
    System.out.println("x = " + p.x + ", y = " + p.y);
  }
}

点此跳转到答案


放张可爱妹子的图缓解一下眼睛疲劳,文章后半部分是程序的输出及解析

1.png

问题一答案

输出:

java

复制代码

Base
Derived
Derived

预测第一行输出很容易。我们创建一个 Base 类型的对象并调用 DoPrint()。DoPrint 调用打印函数,我们得到第一行。

DoPrint(y) 导致第二行输出。与 C++ 一样,Java 中允许将派生类引用分配给基类引用。因此,表达式 Base y = new Derived() 在 Java 中是一个有效的语句。在 DoPrint() 中,o 开始引用与 y 引用的对象相同的对象。此外,与 C++ 不同,Java 中的函数默认是虚拟的。因此,当我们调用 o.print() 时,由于 Java 中默认存在的运行时多态性,会调用 Derived 类的 print() 方法。

DoPrint(z) 导致第三行输出,我们传递一个 Derived 类型的引用,并再次调用 Derived 类的 print() 方法。这里要注意的一点是:与 C++ 不同,Java 中不会发生对象切片。因为非原始类型总是通过引用分配的。

问题二答案

输出

Compiler Error

Compiler Error:编译器错误,在上面的程序中,没有访问权限问题,因为 Point 和 Main 在同一个包中,并且一个类的受保护成员可以在同一个包的其他类中访问。代码的问题是:Point 中没有默认构造函数。

与 C++ 一样,如果我们编写自己的参数化构造函数,则 Java 编译器不会创建默认构造函数。因此,对 Point 类进行了以下两项更改,可以修复上述程序。

删除参数化构造函数。 添加一个没有任何参数的构造函数。 Java 不支持默认参数,所以这不是一个选项。

目录
相关文章
|
6天前
|
Java 关系型数据库 数据库连接
Javaweb之Mybatis入门程序的详细解析
本文详细介绍了一个MyBatis入门程序的创建过程,从环境准备、Maven项目创建、MyBatis配置、实体类和Mapper接口的定义,到工具类和测试类的编写。通过这个示例,读者可以了解MyBatis的基本使用方法,并在实际项目中应用这些知识。
44 11
|
9天前
|
传感器 监控 Java
Java代码结构解析:类、方法、主函数(1分钟解剖室)
### Java代码结构简介 掌握Java代码结构如同拥有程序世界的建筑蓝图,类、方法和主函数构成“黄金三角”。类是独立的容器,承载成员变量和方法;方法实现特定功能,参数控制输入环境;主函数是程序入口。常见错误包括类名与文件名不匹配、忘记static修饰符和花括号未闭合。通过实战案例学习电商系统、游戏角色控制和物联网设备监控,理解类的作用、方法类型和主函数任务,避免典型错误,逐步提升编程能力。 **脑图速记法**:类如太空站,方法即舱段;main是发射台,static不能换;文件名对仗,括号要成双;参数是坐标,void不返航。
34 5
|
9天前
|
Java C语言
课时8:Java程序基本概念(标识符与关键字)
课时8介绍Java程序中的标识符与关键字。标识符由字母、数字、下划线和美元符号组成,不能以数字开头且不能使用Java保留字。建议使用有意义的命名,如student_name、age。关键字是特殊标记,如蓝色字体所示。未使用的关键字有goto、const;特殊单词null、true、false不算关键字。JDK1.4后新增assert,JDK1.5后新增enum。
|
9天前
|
Java 编译器
课时7:Java程序基本概念(注释)
课时7介绍了Java程序中的注释。编程语言有其语法和语义,注释有助于理解代码需求,防止断档。Java支持三类注释:单行(//)、多行(/* */)和文档注释(/** */)。注释不会被编译器编译。范例中展示了如何在代码中使用注释,并强调了注释对项目文档管理的重要性。
|
21天前
|
Java API 数据处理
深潜数据海洋:Java文件读写全面解析与实战指南
通过本文的详细解析与实战示例,您可以系统地掌握Java中各种文件读写操作,从基本的读写到高效的NIO操作,再到文件复制、移动和删除。希望这些内容能够帮助您在实际项目中处理文件数据,提高开发效率和代码质量。
27 4
|
6天前
|
存储 Java 数据库连接
【YashanDB知识库】Java程序调用存储过程,在提取clob时报YAS-00004
【YashanDB知识库】Java程序调用存储过程,在提取clob时报YAS-00004
|
6天前
|
搜索推荐 Java Android开发
课时146:使用JDT开发Java程序
在 Eclipse 之中提供有 JDT环境可以实现java 程序的开发,下面就通过一些功能进行演示。 项目开发流程
|
1月前
|
XML JSON Java
Java中Log级别和解析
日志级别定义了日志信息的重要程度,从低到高依次为:TRACE(详细调试)、DEBUG(开发调试)、INFO(一般信息)、WARN(潜在问题)、ERROR(错误信息)和FATAL(严重错误)。开发人员可根据需要设置不同的日志级别,以控制日志输出量,避免影响性能或干扰问题排查。日志框架如Log4j 2由Logger、Appender和Layout组成,通过配置文件指定日志级别、输出目标和格式。
|
9天前
|
Java 开发工具
课时5:第一个Java程序
课时5介绍了编写第一个Java程序的步骤,包括创建Hello.java文件、编写“Hello World”代码、编译和运行程序。主要内容有:1) 新建并编辑Hello.java;2) 编译Java源文件生成.class文件;3) 通过命令行解释执行Java程序;4) 解释主方法的作用及信息输出操作。本课强调了类定义、文件命名规则和基本程序结构的重要性,并建议初学者使用记事本编写代码以熟悉基础语法。
|
2月前
|
传感器 安全 算法
消防救援支队消防员单兵装备智能养护舱电机驱动java版程序(二)
本文探讨消防救援中智能养护舱电机驱动的Java程序设计,作为系列文章第二部分。通过自动化和智能化手段,智能养护舱提升了装备维护效率与准确性。文章详细介绍了电机驱动模块的设计与实现,包括硬件选型、PID控制策略、安全保护机制及Java程序架构,确保电机精确控制、稳定性和安全性。未来将优化功能并引入智能算法和物联网技术,进一步提升装备维护智能化水平。

推荐镜像

更多