相关疑难解决方法(0)

重载和覆盖

重载和覆盖之间有什么区别.

c# inheritance

101
推荐指数
4
解决办法
16万
查看次数

覆盖和隐藏之间的确切区别

任何人都可以在内存和引用方面告诉覆盖和隐藏的工作.

class A
{
    public virtual void Test1() { //Impl 1}
    public virtual void Test2() { //Impl 2}
}
class B  : A
{
    public override void Test1() { //Impl 3}
    public new void Test2() { Impl 4}
}

static Main()
{
    A aa=new B() //This will give memory to B
    aa.Test1(); //What happens in terms of memory when this executes
    aa.Test2(); //-----------------------SAME------------------------
}
Run Code Online (Sandbox Code Playgroud)

这里的内存是B类,但在第二个语句中,将调用aa.Test2类A的方法.为什么?如果B有内存,则应调用B的方法(在我看来).

任何非常深刻和完全描述这一基础的链接/练习将是一个很大的帮助.

c# oop overriding member-hiding

16
推荐指数
2
解决办法
2万
查看次数

覆盖C#中的关键字

我有以下课程:

namespace ConsoleApplication8
{
    public abstract class Employee
    {
        public virtual void Show()
        {
            Console.WriteLine("from base.");
        }
    }

    public class Manager:Employee 
    {
        public void Show()
        {

            Console.WriteLine("from child.");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            var man=new Manager();
            man.Show();
            Console.ReadKey();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这里我没有overrideShow()派生类中的方法使用任何关键字,Manager但代码运行正常.那么override关键字的实际用途是什么?

c#

2
推荐指数
1
解决办法
703
查看次数

功能覆盖没有虚拟和覆盖

我只有一个基本问题:

public class virtualTest
   {
       public virtual void vTest()
       {
           Console.WriteLine("Base Class");
       }
   }

   public class derivedVirtualTest : virtualTest
   {
       public override void  vTest()
        {
            Console.WriteLine("Derived Class");
        }
   }
Run Code Online (Sandbox Code Playgroud)

这里我使用函数覆盖函数vTest()

但如果我:

public class virtualTest
   {
       public void vTest()
       {
           Console.WriteLine("Base Class");
       }
   }

   public class derivedVirtualTest : virtualTest
   {
       public void  vTest()
        {
            Console.WriteLine("Derived Class");
        }
   }
Run Code Online (Sandbox Code Playgroud)

从相应位置删除虚拟和覆盖关键字,然后代码工作.

这怎么可能?

或者如果代码在没有虚拟和覆盖的情况下正常工作,那么覆盖和虚拟(整个函数覆盖)的用途是什么?

编辑:

我通过它调用上面的类的方法

 static void Main(string[] args)
        {



            derivedVirtualTest objderivedVirtualTest = new derivedVirtualTest();
            objderivedVirtualTest.vTest();

            virtualTest objvirtualTest = new virtualTest();
            objvirtualTest.vTest();

            Console.ReadLine(); …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net

1
推荐指数
2
解决办法
1350
查看次数

C#中继承的奇怪行为

我对C#很新,所以我希望如果我的问题听起来很愚蠢请原谅我的无知.

-我尝试Inheritance用丰达C#,发现它在一些奇怪的行为方式,所以我想用检查出来Java,我得到了我的预期的结果.

-我只是想知道这里有什么我想念的.......

C#代码:

 class Animal
 {
   public void Sound()
   {
     System.Console.WriteLine("I don't make any sound");
   }


 } 





 class Dog : Animal
 {
   public void Sound()
   {
     System.Console.WriteLine("barking");


   }  

 }


 class InheritTest
 {
   static void Main()
   {
     Animal a = new Dog();         // Implicit conversion

     Dog    d = (Dog) a;   // Explicit conversion


     a.Sound();
     d.Sound();

   }

 }
Run Code Online (Sandbox Code Playgroud)

输出:

I don't make any sound
barking
Run Code Online (Sandbox Code Playgroud)

JAVA代码:

 class Animal
 {
   public void sound()
   { …
Run Code Online (Sandbox Code Playgroud)

c# java inheritance implicit-conversion explicit-conversion

0
推荐指数
1
解决办法
83
查看次数