回 帖 发 新 帖 刷新版面

主题:请问大家:书中这个例子是对的吗??

//书中有下面的抽象类定义及派生类.我不明白派生类中的属性能访问基类中的私有变量吗?


using System;
public abstract class Employee
{
    private string name;
    private long idcard;
    public Employee(string n, long i)
    {
        name = n;
        idcard = i;
    }
    public abstract string Name { get;set;}
    public abstract long ID { get;set;}
}
public class WorkeEmp : Employee
{
    public WorkeEmp(string n, long i) : base(n, i) { }
    public override string Name
    {
        get { return name; }     //能够访问基类的私有变量吗
        set { name = value; }
    }
    public override long ID
    {
        get { return idcard; }
        set { idcard = value; }
    }
}

回复列表 (共3个回复)

沙发

上面的代码,编译器出现的错误是:
错误    1    “Employee.name”不可访问,因为它受保护级别限制    e:\Documents and Settings\hlleo\My Documents\Visual Studio 2005\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs    19    22    ConsoleApplication1

错误    2    “Employee.name”不可访问,因为它受保护级别限制    e:\Documents and Settings\hlleo\My Documents\Visual Studio 2005\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs    20    15    ConsoleApplication1

错误    3    “Employee.idcard”不可访问,因为它受保护级别限制    e:\Documents and Settings\hlleo\My Documents\Visual Studio 2005\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs    24    22    ConsoleApplication1

错误    4    “Employee.idcard”不可访问,因为它受保护级别限制    e:\Documents and Settings\hlleo\My Documents\Visual Studio 2005\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs    25    15    ConsoleApplication1

板凳

private string name;
    private long idcard;
当然不行了,私有变量本来就只在自己类中有效,你可以将其改为protected类型,或者更高的访问类型public

3 楼

谢谢楼上的朋友,
我的教科书 C#编程及应用程序开发教程 里面存在好多问题

我来回复

您尚未登录,请登录后再回复。点此登录或注册