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

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

难度级别: 简单

程序

程序一


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

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

a) Derived::show() called

b) Base::show() called

点此跳转到答案


程序二


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

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();
    }
}

image.png

点此跳转到答案


程序三


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

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

image.png

点此跳转到答案


问题四


4) 关于 Java 中的继承,下列哪项是正确的?

1) 私有方法是最终的。
2) 受保护的成员可以在包内访问,在包
   外继承类。
3) 受保护的方法是最终的。
4)我们不能覆盖私有方法。

image.png

点此跳转到答案


程序五


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

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);
    }
}

image.png

点此跳转到答案


问题六


6) 预测以下程序的输出。请注意, fun() 在 base 中是 public ,而在衍生中是 private 。

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

image.png

点此跳转到答案


问题七

下列关于 Java 继承的说法正确的是 
1) 在 Java 中,所有类都直接或间接地从 Object 类继承。Object 类是所有类的根。
2) Java 中不允许多重继承。
3) 与 C++ 不同的是,Java 中没有像继承类型那样可以指定继承是受保护的、公共的还是私有的。

image.png

点此跳转到答案


程序八


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

class Grandparent {
    public void Print() {
        System.out.println("Grandparent's Print()");
    }
}
class Parent extends Grandparent {
    public void Print() {
        System.out.println("Parent's Print()");
    }
}
class Child extends Parent {
    public void Print() {
        super.super.Print(); 
        System.out.println("Child's Print()");
    }
}
public class Main {
    public static void main(String[] args) {
        Child c = new Child();
        c.Print();
    }
}

image.png

点此跳转到答案image.png


程序九


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

final class Complex {
    private final double re;
    private final double im;
    public Complex(double re, double im) {
        this.re = re;
        this.im = im;
    }
    public String toString() {
        return "(" + re + " + " + im + "i)";
    }
}
class Main {
  public static void main(String args[])
  {
       Complex c = new Complex(10, 15);
       System.out.println("Complex number is " + c);
  }         
}

image.png

点此跳转到答案


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

image.png


输出及解析

程序一输出


输出

a

说明

在上面的程序中,b 是一个 Base 类型的引用,指的是一个 Derived 类的对象。在 Java 中,函数默认是虚拟的。所以运行时多态发生并调用派生的 fun()。


程序二输出


输出

C

说明

最终方法不能被覆盖。


程序三输出


答案

A

说明

与 C++ 一样,当函数是静态的时,不会发生运行时多态性。


程序四答案

答案

A

程序五答案

答案

A

说明:

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


程序六答案

答案

C

说明:

对覆盖基类函数的派生类函数进行更严格的访问是编译器错误。


问题七答案

答案

C

说明:

参见 C++ 和 Java 中继承的比较


程序八答案

答案

A

说明:

在 Java 中,不允许执行 super.super。我们只能使用 Parent 访问祖父母的成员。例如,以下程序运行良好。

// 猜测输出
// 文件名 Main.java 
class Grandparent { 
    public void Print() { 
        System.out.println("Grandparent's Print()"); 
    } 
} 
class Parent extends Grandparent { 
    public void Print() { 
      super.Print();  
        System.out.println("父母的打印()"); 
    } 
} 
class Child extends Parent { 
    public void Print() { 
        super.Print();  
        System.out.println("孩子的打印()"); 
    } 
} 
class Main { 
    public static void main(String[] args) { 
        Child c = new Child(); 
        c.打印();
    }
}

问题九答案

答案

A

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

目录
相关文章
|
6天前
|
XML 存储 JSON
Java程序部署
Java程序部署
|
6天前
|
Java 编译器
封装,继承,多态【Java面向对象知识回顾①】
本文回顾了Java面向对象编程的三大特性:封装、继承和多态。封装通过将数据和方法结合在类中并隐藏实现细节来保护对象状态,继承允许新类扩展现有类的功能,而多态则允许对象在不同情况下表现出不同的行为,这些特性共同提高了代码的复用性、扩展性和灵活性。
封装,继承,多态【Java面向对象知识回顾①】
|
20天前
|
Java 编译器
Java——类与对象(继承和多态)
本文介绍了面向对象编程中的继承概念,包括如何避免重复代码、构造方法的调用规则、成员变量的访问以及权限修饰符的使用。文中详细解释了继承与组合的区别,并探讨了多态的概念,包括向上转型、向下转型和方法的重写。此外,还讨论了静态绑定和动态绑定的区别,以及多态带来的优势和弊端。
22 9
Java——类与对象(继承和多态)
|
7天前
|
消息中间件 分布式计算 Java
Linux环境下 java程序提交spark任务到Yarn报错
Linux环境下 java程序提交spark任务到Yarn报错
18 5
|
8天前
|
Java 编译器 数据库连接
探索Java中的异常处理:提升程序的鲁棒性
【9月更文挑战第25天】在Java的世界里,异常是那些不请自来、令人头疼的“客人”。它们悄无声息地潜入我们的代码,一旦出现,便可能导致程序崩溃或行为异常。但是,如果能够妥善管理这些异常,我们就能将潜在的灾难转变为增强程序鲁棒性和用户体验的机会。本文将通过深入浅出的方式,带领读者理解Java异常处理的重要性,并提供实用的策略来优雅地处理这些意外情况。让我们一起学习如何在Java中捕捉、处理和预防异常,确保我们的程序即使在面对不可预见的错误时也能保持稳健运行。
|
9天前
|
Java
Java 的继承
在一个森林中,各种动物共存,如狗和猫。为了管理和组织这些动物,我们采用面向对象的方法设计模型。首先创建 `Animal` 超类,包含 `name` 和 `age` 属性及 `makeSound()` 和 `displayInfo()` 方法。接着,通过继承 `Animal` 创建子类 `Dog` 和 `Cat`,重写 `makeSound()` 方法以发出不同的声音。实例化这些子类并使用它们,展示了继承带来的代码重用、扩展性和多态性等优点。这种方式不仅简化了代码,还体现了现实世界的层次结构。
|
14天前
|
监控 Java 数据库
Java程序如何进行不停机更新?
Java程序如何进行不停机更新?
16 1
|
24天前
|
Java
java的继承详解
在 Java 中,继承是一个核心概念,它允许子类 `extends` 父类来重用和扩展其属性与方法。子类可以覆盖父类的方法以改变行为,同时使用 `super` 关键字调用父类的构造方法或方法。虽然 Java 不支持多继承,但可以利用抽象类与接口实现多层继承。这种方式极大地增强了代码的复用性和维护性。
|
1月前
|
缓存 监控 安全
如何提高 Java 高并发程序的性能?
以下是提升Java高并发程序性能的方法:优化线程池设置,减少锁竞争,使用读写锁和无锁数据结构。利用缓存减少重复计算和数据库查询,并优化数据库操作,采用连接池和分库分表策略。应用异步处理,选择合适的数据结构如`ConcurrentHashMap`。复用对象和资源,使用工具监控性能并定期审查代码,遵循良好编程规范。
|
2月前
|
Java 编译器
Java继承
Java继承
16 1
下一篇
无影云桌面