C#的小题目.请教大家!!! 是不是调用父类的东西,如果父类已经命名了就不能修改?? 答案是B,请大家帮忙

分析如下C#代码,根据类的继承关系,运行后的输出结果是( )。 (选择一项)
public class Person{
private int age=10;
public int Age {
get{return age;}
set{
age = value;
Console.Write("请勿入内!");
}
}
}
public class People:Person{
public People(){
if (this.Age >=18)
Console.Write("成年人!");
else
Console.Write("非成年人!");
}
}
public class Test{
static void Main(){
People Shang=new People();
Shang.Age =50;
Console.ReadLine ();
}
}

a) 请勿入内!
b) 非成年人! 请勿入内!
c) 请勿入内!成年人!
d) 成年人! 请勿入内!
回复 net960725606: 咳咳..我已经说了答案是B了 ....回答问题时要带解释

我们一步步的看 :
第一步: People Shang=new People();
第二步: Shang.Age =50;
第三步: Console.ReadLine ();
在第一步中:使用People的构造方法构造,调用People的构造方法
public People(){
if (this.Age >=18)
Console.Write("成年人!");
else
Console.Write("非成年人!");
}
People类的Age属性来自父类Person,而父类中Age的默认值是10,所以判断会进入else,于是打印 "非成年人!"
第二步Shang.Age=50;这一句只是一个简单的赋值,但是Age是父类中定义的,赋值也是调用父类中set属性赋值的,所以
set{
age = value;
Console.Write("请勿入内!");
} 赋值之后,无论是多少都会打印"请勿入内!"

第三步:Console.ReadLine ();
什么都没有打印 只是障眼法

分析:这个题目的意义在于让你理解父类子类的继承关系,但是很显然有故意下套刁难的嫌疑
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-06
选择c吧!这个你完全可以在开发环境中写一下试试嘛!
第2个回答  2011-01-06
父类里的age设成private了,那样子类的对象就不能更改了,试试改成public
第3个回答  2011-01-06
People Shang=new People();
实例化People对象的时候调用了这个类的 构造,因为这个类继承承person类 age=10 所以构造判断<18 打印非成年人
Shang.Age =50;
表面上是给People对象的属性赋值 但是person的set属性构造器 不光是赋值 还多加了打印 所以打印出了请勿入内
相似回答