和平广场附件的宾馆:请教C#几个问题

来源:百度文库 编辑:中科新闻网 时间:2024/05/08 17:06:44
出现这样的错误"不可访问“Employee.name”,因为它受保护级别限制"
怎么样呢
using System;
public abstract class Employee
{
private string name;
private long idcard;
private double salary;
private double increase;
public Employee(string n,long i,double m)
{
name=n;
idcard=i;
salary=m;
}
public abstract string Name{get;set;}
public abstract double Salary{get;set;}
public abstract long ID{get;set;}
public abstract double Increase{get;set;}
public abstract void Raise(double perent);
public abstract void Print();
}
public class WorkEmp:Employee
{
public WorkEmp(string n,long i,double m):base(n,i,m){}
public override string Name
{
get{return name;}
set{name=value;}
}
public override double Salary
{
get{return salary;}
set{slary=value;}
}
public override long ID
{
get{return idcard;}
set{idcard=value;}
}
public override double Increase
{
get{return increase;}
set{increase=value;}
}
public override void Print()
{
Console.WriteLine("姓名:{0}",name);
Console.WriteLine("身份证号:{0}",idcard);
Console.WriteLine("基本工资:{0}",salary);
Console.WriteLine("增加工资额:{0}",increase);
}
public override void Raise(double percent)
{
Console.WriteLine("普通员工工资增加数额计算");
Increase=percent*salary;
}
}
public class App
{
public static void Main()
{
WorkEmp w=new WorkEmp("Mary",19980101,500);
w.Raise(0.05);
Console.WriteLine("该员工的工资情况为:");
w.Print();
}
}

private string name;
private long idcard;
private double salary;
private double increase;

全部改成 protected 而不是 private。不然你无法在继承类中使用它们。

private:只可以在类的内部进行调用,而继承它的类和外部的类则无法调用
internal:在同一个项目内,可以自由的调用,而超出了这个项目就无法调用(这个特别特别猛,特别好用,我每次做很复杂的项目的时候就把所有的private都换成internal)
public:所有地方都可以调用
protected:只有类的内部和子类才可以调用