【Java练习题】Java 程序的输出 | 第二十三套(继承)

简介: 【Java练习题】Java 程序的输出 | 第二十三套(继承)

难度级别: 简单

程序

程序一


1) 以下程序的输出是什么?

public class A extends B
{
  public static String sing()
  {
    return "fa";
  }
  public static void main(String[] args)
  {
    A a = new A();
    B b = new A();
  System.out.println(a.sing() + " " + b.sing());
  }
}
class B
{
  public static String sing()
  {
    return "la";
  }
}

点此跳转到答案


程序二


2) 以下程序的输出是什么?

class Building
{
  Building()
  {
    System.out.println("Geek-Building");
  }
  Building(String name)
  {
    this();
    System.out.println("Haiyong-building: String Constructor" + name);
  }
}
public class House extends Building
{
  House()
  {
    System.out.println("Haiyong-House ");
  }
  House(String name)
  {
    this();
    System.out.println("Haiyong-house: String Constructor" + name);
  }
  public static void main(String[] args)
  {
    new House("Haiyong");
  }
}

点此跳转到答案


程序三


3) 以下程序的输出是什么?

class Base
{
  final public void show()
  {
    System.out.println("Base::show() called");
  }
}
class Derived extends Base
{
  public void show()
  {
    System.out.println("Derived::show() called");
  }
}
class Main
{
  public static void main(String[] args)
  {
    Base b = new Derived();
    b.show();
  }
}

点此跳转到答案


程序四


4) 以下程序的输出是什么?

public class EH
{
  public static void main(String args[])
  {
    int divisor =0;
    int dividend = 11;
    try
    {
      int result=dividend/divisor;
      System.out.println("结果是"+result);
    }
    catch(Exception e)
    {
      System.out.println("发生异常");
    }
    catch(ArithmeticException ae)
    {
      System.out.println("被零除");
    }
    finally
    {
      System.out.println("我们做完了!");
    }
  }
}

点此跳转到答案


程序五


5) 以下程序的输出是什么?

abstract class Vibrate
{
  static String s = "-";
  Vibrate()
  {
    s += "v";
  }
}
public class Echo extends Vibrate
{
  Echo()
  {
    this(7);
    s += "e";
  }
  Echo(int x)
  {
    s += "e2";
  }
  public static void main(String[] args)
  {
    System.out.print("made " + s + " ");
  }
  static
  {
    Echo e = new Echo();
    System.out.print("block " + s + " ");
  }
}

点此跳转到答案


文章后半部分是程序的输出及解析

image.png


输出及解析

程序一输出


输出

fa la

说明

B b = new A(); b 是 B 类型的对象,因此 b.sing() 指的是 B 类的方法 sing


程序二输出


输出

说明:
B b = new A(); b 是 B 类型的对象,因此 b.sing() 指的是 B 类的方法 sing
程序二输出
输出:

说明

构造函数调用它们的超类默认构造函数,它首先执行,并且构造函数可以被重载。由于 this(),第一个带有一个参数的 House 构造函数被调用,并且流程转移到 house 类的无参数构造函数。从这里开始,由于超类默认构造函数,构建的无参数构造函数被调用。因此显示的顺序。


程序三输出


输出

编译器错误

说明

最终方法不能被覆盖。但是,如果我们删除关键字 final,则输出将是

Derived::show() called

程序四答案

输出

编译器错误

说明

显示异常 ArithmeticException 已被捕获。catch 块的终端 排序很重要 更具体/子类 (ArithmeticException) 需要更早出现,更通用/超类 (Exception) 需要稍后编写。如果算术异常和一般异常的顺序互换,程序将正确执行。


程序五答案

输出 :

block -ve2e made -ve2e

说明:

静态初始化块是创建 Echo 实例的唯一地方。然后创建 Echo 实例,Echos no-arg 构造函数调用其 1-arg 构造函数,然后调用 Vibrates 构造函数(然后秘密调用 Objects 构造函数)。那时,各种构造函数都会执行,从 Objects 构造函数开始,然后返回到 Echos 无参数构造函数。


以上就是本篇文章的所有内容了

目录
相关文章
|
21天前
|
Java 流计算
利用java8 的 CompletableFuture 优化 Flink 程序
本文探讨了Flink使用avatorscript脚本语言时遇到的性能瓶颈,并通过CompletableFuture优化代码,显著提升了Flink的QPS。文中详细介绍了avatorscript的使用方法,包括自定义函数、从Map中取值、使用Java工具类及AviatorScript函数等,帮助读者更好地理解和应用avatorscript。
利用java8 的 CompletableFuture 优化 Flink 程序
|
6天前
|
Java 开发者
在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口
【10月更文挑战第20天】在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口。本文揭示了这两种方式的微妙差异和潜在陷阱,帮助你更好地理解和选择适合项目需求的线程创建方式。
11 3
|
6天前
|
Java
在Java多线程编程中,实现Runnable接口通常优于继承Thread类
【10月更文挑战第20天】在Java多线程编程中,实现Runnable接口通常优于继承Thread类。原因包括:1) Java只支持单继承,实现接口不受此限制;2) Runnable接口便于代码复用和线程池管理;3) 分离任务与线程,提高灵活性。因此,实现Runnable接口是更佳选择。
19 2
|
6天前
|
Java
Java中多线程编程的基本概念和创建线程的两种主要方式:继承Thread类和实现Runnable接口
【10月更文挑战第20天】《JAVA多线程深度解析:线程的创建之路》介绍了Java中多线程编程的基本概念和创建线程的两种主要方式:继承Thread类和实现Runnable接口。文章详细讲解了每种方式的实现方法、优缺点及适用场景,帮助读者更好地理解和掌握多线程编程技术,为复杂任务的高效处理奠定基础。
16 2
|
6天前
|
Java 开发者
Java多线程初学者指南:介绍通过继承Thread类与实现Runnable接口两种方式创建线程的方法及其优缺点
【10月更文挑战第20天】Java多线程初学者指南:介绍通过继承Thread类与实现Runnable接口两种方式创建线程的方法及其优缺点,重点解析为何实现Runnable接口更具灵活性、资源共享及易于管理的优势。
16 1
|
11天前
|
Java Maven 数据安全/隐私保护
如何实现Java打包程序的加密代码混淆,避免被反编译?
【10月更文挑战第15天】如何实现Java打包程序的加密代码混淆,避免被反编译?
24 2
|
14天前
|
安全 Java Linux
java程序设置开机自启
java程序设置开机自启
|
17天前
|
Java 测试技术 编译器
Java零基础-继承详解!
【10月更文挑战第4天】Java零基础教学篇,手把手实践教学!
19 2
|
17天前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
24 1
|
14天前
|
Java 测试技术 编译器
Java零基础-继承详解!
【10月更文挑战第6天】Java零基础教学篇,手把手实践教学!
17 0