gpt4 book ai didi

java - 重载和隐藏 - 差异

转载 作者:行者123 更新时间:2023-12-01 07:26:35 30 4
gpt4 key购买 nike

我正在准备 SCJP,但我对 jls 的这些术语有点困惑。

关于 jls 的重载:

If two methods of a class (whether both declared in the same class, or both inherited by a class, or one declared and one inherited) have the same name but signatures that are not override-equivalent, then the method name is said to be overloaded.

关于隐藏:

If a class C declares or inherits a static method m, then m is said to hide any method m', where the signature of m is a subsignature (§8.4.2) of the signature of m', in the superclasses and superinterfaces of C that would otherwise be accessible to code in C.

看起来隐藏只是静态方法重载的一部分。

但是这些定义相当华丽。请澄清差异。

您能提供具体的例子来感受差异吗?

最佳答案

重载是指有两个或多个同名但参数不同的方法。 http://en.wikipedia.org/wiki/Method_overloading

重写是指方法不是静态的并且名称和参数相同。

例如,

public class A {
public void test1(String a) {System.out.println(a);}
}

public class B extends A {
public void test1(String a) {System.out.println(a);}
}

那么您将重写方法 test1。

仅当两种方法都是静态时才会发生隐藏。

隐藏静态方法和重写实例方法之间的区别具有重要含义:

被调用的重写实例方法的版本是子类中的版本。调用的隐藏静态方法的版本取决于它是从父类(super class)还是子类调用。

来自http://docs.oracle.com/javase/tutorial/java/IandI/override.html

关于java - 重载和隐藏 - 差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23590536/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com