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呢?
{
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呢?
c2.A = 5;
Console.WriteLine(c2.A);
Console.ReadLine();
// 你定义的是实例变量,实例变量跟着对象走,每个对象都有自己的实例变量。
// 如果按照你的想法,那全世界的汽车具有同一种颜色、同一种规格、同一种……Car c1 = new Car();
c1.Color = Color.Red;
Car c2 = new Car();
Car c3 = new Car();
// ......// c2.Color = c3.Color = c4.Color = ...... = Color.Red;
// ~~~
得到的肯定是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();即可。
c.A=5;
Console.WriteLine(c.A);
用多态不是挺好?c2继承的是c1里面初始的值,懂吗?
理解非常到位,静态类似常量共多个实例来维护,看看大话模式吧