java - 基类 C# 和 Java 不同的行为

标签 java c#

using System;
using System.Collections.Generic;
using System.Text;

public class Based
{
   public string fun()
    {
        return " I am based";
    }
}

public class Derived :Based
{
    public string fun()
    {
        return " I am derived";
    }

}

namespace ConsoleApplication8
{
    class Program
    {

        static void Main(string[] args)
        {
            Based br = new Derived();;

            Console.Write(br.fun());
        }


    }
}

大家好,我已经用 Java 和 C# 编写了一小段代码。

但是我得到了不同的输出。你能解释一下吗。

在 Java 中,我得到的是“我是派生的”,而在 C# 中,我得到的是“我是基于的”。你能给我解释一下为什么吗?以及我们什么时候使用以下语法

Baseclass obj = new Derivedclass().

最佳答案

在 Java 中,默认情况下所有方法都是 virtual,但在 C# 中它们不是。 因此,在 C# 中,您必须手动标记虚方法。

修改代码:

public class Based
{
    public virtual string fun()
    {
        return "I am base";
    }
}

public class Derived : Based
{
    public override string fun()
    {
        return "I am derived";
    }
}

关于java - 基类 C# 和 Java 不同的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30190274/

相关文章:

java - 我需要从 Microsoft Exchange 服务器上托管的电子邮件发送电子邮件

c# - 从比屏幕高的控件绘制位图

c# - 如何使用 skype4com 将 Skype 用户状态从在线更改为离开?

java - Akka - 在 child 发生异常后 parent 如何向 child 发送消息

c# - 我如何从 Asp.net 中的文本文件加载信息?

使用 Oauth2 和 Google Drive API 的 c# 异常(使用 4.0 .Net)

c# - EF核心: update database error: relation "Owner" already exists

java - ItemTouchHelper onSwiped() 不更新来自构造函数的数据

java - 无法执行 : javax. ws.rs.NotSupportedException:找不到类型的消息正文阅读器:T 内容类型:application/xml

java - Spring web 套接字和 Stomp 日志中的 "No decoder for session id"