gpt4 book ai didi

java - Java中的每个方法都可以重写吗

转载 作者:搜寻专家 更新时间:2023-11-01 01:03:46 28 4
gpt4 key购买 nike

Java 中的每个方法都可以重写吗?我知道在 C# 中定义为虚拟的方法可以被覆盖,这是如何在 Java 中实现的?

最佳答案

并非每个方法都是可重写的:您不能重写finalprivatestatic 的方法。

下面是这在实践中意味着什么的一个小例子:

class Base {
public final void fun1() {
}

private void fun2() {
System.out.println("Base::fun2");
}

public void fun2Call() {
fun2();
}
}

class Rextester extends Base
{
/*
@Override
public void fun1() { // compile error, because Base::fun1 is final
}
*/

// if @Override is uncommented, it will protect you from overriding private methods
// otherwise you will not get any compile time error.
//@Override
private void fun2() {
System.out.println("Rextester::fun2");
}

public static void main(String args[])
{
Base b = new Rextester();
b.fun2Call(); // will output Base::fun2,
// if you change private to protected or public
// then you will see Rextester::fun2 in output
}
}

我认为 static 方法覆盖与 private 方法覆盖是一样的,至少你会得到类似的行为。当然,将 static 方法更改为 publicprotected 仍然不允许您覆盖它。

关于java - Java中的每个方法都可以重写吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23134595/

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