public class Class1
    {
        private int a = 10;        public int A
        {
            get { return a; }
            set { a = value; }
        }    }  public class Class2 : Class1
    {
        public int test()
        {
            return this.A;
        }
    } class Program
    {
        static void Main(string[] args)
        {
            Class1 c1 = new Class1();
            c1.A = 5;
            Class2 c2 = new Class2();
            Console.WriteLine(c2.A);
            Console.ReadLine();
        }
    }为什么输出的是10?  如何在Class2中得到5呢?

解决方案 »

  1.   

    Class2 c2 = new Class2();
    c2.A = 5;
      Console.WriteLine(c2.A);
      Console.ReadLine();
      

  2.   

    如果有Class3、4 ...都要一个个的赋值吗?
      

  3.   

    static private int a = 10;
      

  4.   


    // 你定义的是实例变量,实例变量跟着对象走,每个对象都有自己的实例变量。
    // 如果按照你的想法,那全世界的汽车具有同一种颜色、同一种规格、同一种……Car c1 = new Car();
    c1.Color = Color.Red;
    Car c2 = new Car();
    Car c3 = new Car();
    // ......// c2.Color = c3.Color = c4.Color = ...... = Color.Red;
    // ~~~
      

  5.   


    得到的肯定是10,因为你在定义c2时是重新new了一个实体,此时c2中的A值必然是10,若要得到5,则:Class2 c2 = new Class2();
    c2.A = 5;
    LZ对继承的理解有误,继承不是继承的实体,而是类的定义,单纯为了定义c2并得到5的话,c1的声明没有任何意义,即:  Class2 c2 = new Class2();
      c2.A = 5;
      Console.WriteLine(c2.A);
      Console.ReadLine();即可。
      

  6.   

    如果不同对象要共用一个变量的话,那么用静态(static)变量是个不错的选择。。
      

  7.   

    Class1 c=new Class2();
    c.A=5;
    Console.WriteLine(c.A);
    用多态不是挺好?c2继承的是c1里面初始的值,懂吗?
      

  8.   

    如果不同对象要共用一个变量的话,那么用静态(static)变量是个不错的选择。。
    理解非常到位,静态类似常量共多个实例来维护,看看大话模式吧