using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;public class A
{
protected int num = 3;
}public class Person : A
{
protected string ssn = "444-55-6666";
protected string name = "John L. Malgraine"; public virtual void GetInfo()
{
Console.WriteLine("Name: {0}", name);
Console.WriteLine("SSN: {0}", ssn);
}
}
class Employee : Person
{
public string id = "ABC567EFG";
public override void GetInfo()
{
// Calling the base class GetInfo method:
base.GetInfo();
Console.WriteLine("Employee ID: {0}", id); //Console.WriteLine("{0}",base.base.num);
}
}class TestClass
{
static void Main()
{
Person E = new Employee();
E.GetInfo();
}
}
我想在Employee类的GetInfo()里把A类中的num打印出来,Console.WriteLine("{0}",base.base.num);这样写显然不对,正确的写法是什么
using System.Collections.Generic;
using System.Linq;
using System.Text;public class A
{
protected int num = 3;
}public class Person : A
{
protected string ssn = "444-55-6666";
protected string name = "John L. Malgraine"; public virtual void GetInfo()
{
Console.WriteLine("Name: {0}", name);
Console.WriteLine("SSN: {0}", ssn);
}
}
class Employee : Person
{
public string id = "ABC567EFG";
public override void GetInfo()
{
// Calling the base class GetInfo method:
base.GetInfo();
Console.WriteLine("Employee ID: {0}", id); //Console.WriteLine("{0}",base.base.num);
}
}class TestClass
{
static void Main()
{
Person E = new Employee();
E.GetInfo();
}
}
我想在Employee类的GetInfo()里把A类中的num打印出来,Console.WriteLine("{0}",base.base.num);这样写显然不对,正确的写法是什么
{
protected int num = 3;
}为什么要 protected呢?
本身设计就可能有问题,这样它在Person 时就是private了,在Employee中就不可见了。
那么你在Employee应该最好不要访问这个本不属于自已的东西。这样改行不行
internal int num = 3;
public class A
{
protected int num = 1;
}public class Person : A
{
protected int num = 2;
}class Employee : Person
{
public int num = 3;
}
如果这样呢?
'直接这样就可以了啊
Console.WriteLine("{0}", base.num);
如果这样写的话 A类中的num 被Person 覆盖 应该没办法获取了
如果A类中定义为 public int num = 1;
可以用 A a =new A(); a.num 获取
如果你真这样写了,两三年后你再看到这段代码,你就要后悔死了(除非这段代码就你一个人见过)。可以尝试
internal int Num
{
get;
private set;
}
构造函数初始化