• 期末Java题库--判断题之错误篇2


    如有错误,欢迎各位大佬评论区指正
    本题库适用Java8以前的版本


    1.子类重写父类方法时,可以降低方法的访问权限。(x)

    在Java中,子类重写父类的方法时,不能降低方法的访问权限。具体来说,子类重写父类的方法时,方法的访问权限必须与父类中的方法相同或更宽松。

    子类重写父类方法时,方法的访问权限不能比父类中的方法更严格。这是为了确保多态性的一致性和安全性。

    2.抽象类中的方法只能定义成抽象的方法.(x)

    在 Java 中,抽象类中的方法可以是抽象方法,也可以是具体实现的方法。

    抽象方法:抽象方法是在抽象类中只声明方法签名,而不提供具体实现的方法。抽象方法没有方法体,以分号(;)结尾。抽象类至少包含一个抽象方法。

    具体实现的方法:抽象类中也可以包含具体实现的方法,这些方法有方法体,可以提供具体的代码逻辑。

    3.子类重写父类的方法时,重写的方法可以与父类被重写的方法名、参数列表以及返回值类型不相同(x)

    在 Java 中,子类重写(Override)父类的方法时,重写的方法必须与父类中被重写的方法具有完全相同的签名,包括方法名、参数列表和返回值类型。如果这些中的任何一个不匹配,那么子类的方法就不能被视为对父类方法的正确重写。

    以下是重写方法必须遵守的规则:
    方法名:必须与父类中被重写的方法完全相同。
    参数列表:参数的数量、顺序和类型必须与父类中被重写的方法完全相同。
    返回值类型:返回值类型必须与父类中被重写的方法相同,或者返回值类型必须是父类方法返回值类型的子类。

    如果子类中的方法与父类中被重写的方法在签名上不匹配,那么这个方法将不会被识别为重写方法,而是作为子类的一个新方法。

    4.多态性体现在类中的数据成员上。(x)

    多态性在Java中主要体现在方法的重载(Overloading)和方法的重写(Overriding)上,而不是直接体现在类的数据成员上。多态性允许我们使用一个接口调用由子类实现的方法,从而实现代码的复用和扩展性。

    Java中,多态性体现在方法成员而不是数据成员。
    数据成员(变量)本身并不体现多态性。数据成员的值可以是不同类型的对象,但这些对象的类型是在编译时确定的,并不会随着运行时的上下文改变。因此,数据成员的多态性并不是Java多态性的主要体现。
    总结:
    多态性主要体现在方法的重载和方法的重写上,通过这些机制,Java程序能够实现灵活的接口调用和代码的复用。数据成员本身并不直接体现多态性,它们的值可以是不同类型的对象,但这些对象的类型是多态性的体现,而不是数据成员本身。

    5.父类的构造方法可以被子类重写。(x)

    在Java中,子类不能重写父类的构造方法。构造方法与类同名,并且没有返回类型,包括void。由于构造方法不是继承的一部分,所以子类不能像重写普通方法那样重写构造方法。

    当子类被实例化时,会自动调用父类的构造方法(如果没有显式调用特定的构造方法)。这个过程称为构造方法链。如果父类没有无参构造方法,那么子类必须在构造方法中显式调用父类的有参构造方法,否则编译器会报错。

    6.向上转型是指用父类对象初始化子类对象(x)

    在 Java 中,向上转型并不是用父类对象初始化子类对象。
    向上转型实际上是使用父类的引用变量来引用子类的对象。

    父类对象和子类对象是不同的实体。父类对象具有父类定义的属性和方法,而子类对象除了拥有父类的属性和方法外,还有自己特有的属性和方法。

    当进行向上转型时,只是改变了引用的类型,使其看起来像是父类类型的引用,但实际上引用指向的仍然是子类的对象。

    7.所有接口都继承自 object类.(x)

    在 Java 中,所有的类默认继承自 java.lang.Object 类,这是 Java 语言中的一个根类。然而,对于接口来说,情况有所不同。

    Java 的接口是用来定义一组公共方法(抽象方法和默认方法)的规范,它不包含任何实现。在 Java 8 之前,接口不能直接继承自 Object 类。这意味着接口是没有任何父类的,它们是独立的。

    从 Java 8 开始,接口可以包含默认方法和静态方法,但它们仍然不能直接继承自 Object 类。不过,Java 8 引入了一个新的特性,允许接口通过默认方法来实现 Object 类的一些方法,例如 toString()、equals()、hashCode() 等。

    8.抽象类的所有方法都必须是抽象方法(x)

    在 Java 中,抽象类可以包含抽象方法和非抽象方法。

    抽象方法是只声明方法签名(即方法名、参数列表和返回类型),而不提供具体实现的方法。一个抽象类至少包含一个抽象方法,或者不包含任何抽象方法(即所有方法都有具体的实现)。

    非抽象方法是指那些在抽象类中提供了具体实现的方法。

    9.抽象类可以实例化。(x)

    Java 中的抽象类不能直接被实例化。

    抽象类是一种特殊的类,它用来作为其他类的基类(即父类)。抽象类可以包含抽象方法(没有实现的方法)和非抽象方法(有具体实现的方法)。由于抽象类可能包含抽象方法,而这些抽象方法需要子类来实现,因此抽象类本身不能被实例化。

    这是因为抽象类可能包含尚未实现的方法,如果能够直接实例化抽象类,那么这些方法将无法被调用,因为它们没有具体的实现。

    10.接口中可以有非抽象方法。(x)【因为本题库是Java8以前版本所以本题为错误】

    在 Java 8 之前,接口(Interface)只能包含抽象方法和常量(即 public static final 修饰的变量)。这意味着接口中的所有方法都必须没有方法体,即它们都是抽象方法。

    从 Java 8 开始,接口的定义发生了一些变化,允许接口中包含非抽象方法。这些非抽象方法包括:

    默认方法(Default Methods):使用 default 关键字修饰的方法,可以有方法体,提供默认实现。
    静态方法(Static Methods):使用 static 关键字修饰的方法,可以有方法体,属于接口本身,不作用于实现接口的任何实例。

    11.如果一个方法要抛出多个异常,则需要使用多个throws进行抛出(x)

    一个抛出即可无需多个,一个方法只能使用一个throws,因为是在声明部分抛出

    12.在异常处理模块中,finally语句如果不发生异常就不会被执行。(x)

    在 Java 的异常处理模块中,finally 语句块无论是否发生异常都会被执行。

    try 语句块用于监测可能会抛出异常的代码段。catch 语句块用于捕获并处理特定类型的异常。而 finally 语句块则用于放置无论是否发生异常都需要执行的代码,比如释放资源、关闭文件或数据库连接等操作。

    13.子类重写父类的方法时,重写的方法可以与父类被重写的方法名、参数列表以及返回值类型不相同.(x)

    方法重写:
    方法重写发生在子类中,允许子类提供父类方法的特定实现。重写的方法必须满足以下条件:
    方法名:与父类中的方法名相同。
    参数列表:与父类中的方法参数列表相同。
    返回值类型:与父类中的方法返回值类型相同,或者返回值类型是父类方法返回值类型的子类。

    方法重载:
    方法重载发生在同一个类中,允许使用相同的函数名,但是参数列表(参数的类型、数量或者顺序)不同。这样,编译器可以根据传入的参数来决定调用哪个方法。

    14.在异常处理模块中,若多个catch语句中的参数类型有父类子类关系,此时应该将父类放在前面,子类放在后面。(x)

    在异常处理中,当多个 catch 语句捕获的异常类型之间存在继承关系时,应该将子类(更具体的异常类型)放在前面,父类(更通用的异常类型)放在后面。这样做是因为子类异常是父类异常的一种特殊情况,如果父类异常处理放在前面,它将会捕获所有继承自它的子类异常,导致后面的子类 catch 语句永远不会被执行。

  • 相关阅读:
    Java遍历Map的5种方法
    CogView中的Self Attention
    Uni-app 苹果应用打包与上线指南
    vlang捣鼓之路
    强转对象方法
    带负电荷羧基化/异性电荷PH响应性非球形/电荷磺酸基/电荷羧基聚苯乙烯微球研究步骤
    SpringBoot3基础用法
    Elasticsearch:Rank feature query - 排名功能查询
    《苍穹外卖》知识梳理6-缓存商品,购物车功能
    C++之异常
  • 原文地址:https://blog.csdn.net/weixin_55511545/article/details/140388258