• 20130409和陈讨论面试题


       public abstract class A          

             {                 

                    public A()

                      {                   Console.WriteLine('A');

                      }

                      public virtual void Fun()

                      {

                      Console.WriteLine("A.Fun()");

                      }

                      }

                      public class B: A

                      {

                      public B()

                      {

                      Console.WriteLine('B');

                      }

                      public new void Fun()

                      {

                      Console.WriteLine("B.Fun()");

                      }

                      public static void Main()

                      {

                      A a = new B();

                      a.Fun();

                      }

                      }

    输出a b a.fun()因为在B中public new void Fun(),“new”中表示方法重写,这在父类和子类方法名相同时表示为子类特有的方法

      200 100 100,装箱是,把a的值复制了一份,装起来,让ob指向。就是说此时ob指向的内容与之前的a没关系了,因为此时内存有2份。。。 a=200这句 没有拆箱
    因为a还是int,200也是int , int c=(int)ob;这个才是拆箱 因为ob是引用类型,c是int类型 拆箱与装箱一定是引用类型与值类型之间变化  装箱: 对值类型在堆中分配一个对象实例,并将该值复制到新的对象中。按三步进行。 第一步:新分配托管堆内存(大小为值类型实例大小加上一个方法表指针和一个SyncBlockIndex)。 第二步:将值类型的实例字段拷贝到新分配的内存中。 第三步:返回托管堆中新分配对象的地址。这个地址就是一个指向对象的引用了。
  • 相关阅读:
    java语言基础
    常用4种限流算法介绍及比较
    如何用Redis实现分布式锁
    翻转字符串
    JAVA之io流
    JAVA之Collections集合
    【转】IT行业岗位以及发展方向
    JAVA之字符串
    JAVA之数组
    Linux之判断字符串是否为空
  • 原文地址:https://www.cnblogs.com/xjt360/p/3009673.html
Copyright © 2020-2023  润新知