gpt4 book ai didi

java - 方法覆盖-C# vs java

转载 作者:搜寻专家 更新时间:2023-11-01 01:50:08 25 4
gpt4 key购买 nike

Java 中的方法覆盖原则与 C# 不同吗?我在 c# 工作,现在要求调试 java 中的代码。

这只是为了阐明我的概念。我有一段代码可以覆盖 c# 中的方法。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace ConsoleApplication1
{
public class A
{
public void Food()
{
Console.Write("1");

}


}

public class B : A
{
public void Food()
{
Console.Write("2");
}

}

public class program
{

static void Main(string[] args)
{
A a = new B();
a.Food();

Console.ReadLine();

}
}

}

OUTPUT-1(毫无疑问)(在 C# 中)但是当我在 java 中执行相同的代码时,我输出为“2”。只是想知道原因,因为不同语言的首要原则可能不同。抱歉,我没有 Java 经验。

谢谢

最佳答案

在C#中,如果你想让一个方法可以重写,你必须在父类(super class)中使用关键字virtual。查看您的示例,如果您将 virtual 添加到类 A 的方法 Food 中,则输出将是 2 而不是 1:

public class A
{
public virtual void Food()
{
Console.Write("1");
}
}

在 Java 中,没有 virtual 关键字。方法自动为 virtual。在 Java 中无法使方法成为非虚拟方法以获得与 C# 相同的行为。

关于java - 方法覆盖-C# vs java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38452776/

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