【发布时间】:2016-07-19 08:08:02
【问题描述】:
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();
}
}
}
输出-1(毫无疑问)(在 C# 中)但是当我在 java 中执行相同的代码时,我输出为“2”。 只是想知道原因,因为最重要的原则在语言上可能会有所不同。对不起,我没有 java 经验。
谢谢
【问题讨论】:
-
您通过
A的变量使用B的实例,但基本上您在B实例上调用Food(),因此您得到2。 -
与C#相比,Java中的方法自动为
virtual。 -
@KevinEsche,@Thomas - 我对此没有反话,我完全同意,但我的问题基本上是“java 如何有不同的输出”,尽管它是相同的编码原则