publicclass Test1
?
??? {
?
??????? private int _age=10;
?
??????? public int Age
?
??????? {
?
??????????? get { return _age; }
?
??????????? set { _age = value; }
?
??????? }
?
??????? public virtual void? Output1(string name)
?
??????? {
?
??????????? name ="Test1";
?
???? ???????Console.Write("Test1.Output1 :Name is "+ name);
?
??????? }
?
??????? public virtual void Output2(ref stringrefname)
?
??????? {
?
??????????? refname = "Test1";
?
? ??????????Console.Write("Test1.Output2 :Name is " + refname);
?
??????? }
?
??? }
?
??? public class Test2:Test1
?
??? {
?
??????? private int _age=20;
?
??????? public override void Output1(stringname)
?
??????? {
?
??????????? name ="Test2";
?
??????????? Console.Write("Test2.Output1 :Name is "+ name);
?
??????? }
?
??????? public new void Output2(ref stringrefname)
?
??????? {
?
??????????? refname = "Test2";
?
??????????? Console.Write("Test2.Output2 :Name is " + refname);
?
??????? }
?
??????? }
?
??????? string name = "Name";
?
??????? string refname = "RefName";
?
??????? Test1 t1 = new Test2();
?
??????? t1.Output1(name);? //輸出1?
?
??????? t1.Output2(ref refname);? // 輸出2?
?
??????? Console.Write(name); // 輸出3?
?
??????? Console.Write(refname); // 輸出4?
?
??????? Test2 t2 = new Test2();
?
??????? Console.Write(t2.Age.ToString()); //輸出5以及是否裝箱?
?
??????? t2.Output2(ref refname);? //輸出6
1 回答

慕姐8265434
TA貢獻(xiàn)1813條經(jīng)驗(yàn) 獲得超2個贊
Test2類重寫了Test1類的OutPut1方法,隱藏了OutPut2方法,因此t1.OutPut1(name)輸出應(yīng)該調(diào)用的是重寫后的方法即t2中的方法,輸出應(yīng)為:est2.Output1 :Name is Test2;t1.OutPut2(ref refname)輸出應(yīng)該是:Test1.Output2 :Name is ?Test1。Console.Write(name)輸出為:Name;Console.Write(refName)應(yīng)為Test2。Console.Write(t2.Age.ToString())不是很清楚。t2.Output2(ref refname)輸出:Test2.Output2 :Name is ?test2
- 1 回答
- 0 關(guān)注
- 349 瀏覽
添加回答
舉報
0/150
提交
取消