namespace 类的继承和访问成员
{
class vehicle//定义汽车vehicle
{
public int wheels;
protected float weight;
public void f()
{
wheels = 4;
weight = 10;
}
}
}
class train
{
public int num;
private int passengers;
private float weight;
public void f()
{
num = 5;
weight = 100;
vehicle v1 = new vehicle();
Console.WriteLine ( v1.wheels);
v1.wheels = 4;
// v1.weight = 6;//重写!//错误 1 “类的继承和访问成员.vehicle.weight”不可访问,因为它受保护级别限制
weight = 6;//private 成员只能被所在的类中方法访问,其他不可。。。。
}
}
class car : vehicle
{
int passengers;
public void f()//覆盖!!!!!!!!!//警告:“类的继承和访问成员.car.f()”隐藏了继承的成员“类的继承和访问成员.vehicle.f()”。
{
vehicle v1 = new vehicle();
Console.WriteLine(v1.wheels);
Console.WriteLine(v1.weight);//错误!!!!!!!!!!!!!!!!!11
Console.WriteLine(weight);//正确
Console.WriteLine(this.weight);//正确
Console.WriteLine(base.weight);//正确
}
}
class Program
{
static void Main(string[] args)
{
上面中 Console.WriteLine(v1.weight);//错误!!!!!!!!!!!!!!!!!为什么??????????是子类访问父类protected 成员啊?
这块儿没看懂,"而编译器按照最保险的原则报错。"???什么意思??怎么说明了这一点????
追答也就是说按理说你的代码是应该可以访问的,但我的代码是不可访问的。但是我的代码只是在你的代码的基础上加了一句v1=t;就造成了出错。编译器报错的原则是有可能出错就报错,如果编译不报错,那如果你加了我的那句代码,就还是会运行报错。
本回答被网友采纳