C# 重写后,调用父类的函数
c#重写后,怎么调用父类函数悬赏分:0-离问题结束还有14天23小时也就是说classA中有一个函数FUNA()我写了一代码处理后来我有定义了classBclassC都是...
c# 重写后,怎么调用父类函数
悬赏分:0 - 离问题结束还有 14 天 23 小时
也就是说 classA 中有一个函数FUNA()我写了一代码处理
后来我有定义了classB classC都是继承classA
我分别对classB classC重写FUNA(),也就是要添加代码且不相同的
现在在实例化classB classC后,调用FUNA(),比如 实例化
classB B=new classB ()classC C=new classC ()
对两个实例A和B,调用FUNA(),我classA中FUNA()写的代码都想执行啊
怎么写 展开
悬赏分:0 - 离问题结束还有 14 天 23 小时
也就是说 classA 中有一个函数FUNA()我写了一代码处理
后来我有定义了classB classC都是继承classA
我分别对classB classC重写FUNA(),也就是要添加代码且不相同的
现在在实例化classB classC后,调用FUNA(),比如 实例化
classB B=new classB ()classC C=new classC ()
对两个实例A和B,调用FUNA(),我classA中FUNA()写的代码都想执行啊
怎么写 展开
展开全部
例如:
class B:A
{
....
public override void FUNA()
{
base.FUNA();
....
下面这里就是你重写的代码了。
}
}
PHP是弱语言..再加上学习的是JAVA...所以有些OOP的思想比较难实现
比如 覆盖和隐藏... JAVA中所有的方法都是虚方法...派生类在继承的时候...如果对方法重写,就实现了覆盖...我对JAVA不了解..所以不太清楚JAVA是否能实现隐藏~如果实现隐藏..情况就不一样了~~
我用C#做个例子
-- 情况1 : 方法的覆盖
class FatherObject
{
public virtual void Test() // 虚方法
{
Console.Write("Father Test()");
}
public void Test1()
{
this.Test();
}
}
class SonObject : FatherObject
{
public override void Test() // 实现覆盖..这个是JAVA的默认的动作~
{
Console.Write("Son Test()");
}
}
SonObject Obj = new SonObject();
Obj.Test1(); // 得到结果 Son Test()
-- 情况2 : 方法的隐藏
class FatherObject
{
public void Test() // 无所谓是不是虚方法
{
Console.Write("Father Test()");
}
public void Test1()
{
this.Test();
}
}
class SonObject : FatherObject
{
public new void Test() // 对父类方法隐藏
{
Console.Write("Son Test()");
}
}
class B:A
{
....
public override void FUNA()
{
base.FUNA();
....
下面这里就是你重写的代码了。
}
}
PHP是弱语言..再加上学习的是JAVA...所以有些OOP的思想比较难实现
比如 覆盖和隐藏... JAVA中所有的方法都是虚方法...派生类在继承的时候...如果对方法重写,就实现了覆盖...我对JAVA不了解..所以不太清楚JAVA是否能实现隐藏~如果实现隐藏..情况就不一样了~~
我用C#做个例子
-- 情况1 : 方法的覆盖
class FatherObject
{
public virtual void Test() // 虚方法
{
Console.Write("Father Test()");
}
public void Test1()
{
this.Test();
}
}
class SonObject : FatherObject
{
public override void Test() // 实现覆盖..这个是JAVA的默认的动作~
{
Console.Write("Son Test()");
}
}
SonObject Obj = new SonObject();
Obj.Test1(); // 得到结果 Son Test()
-- 情况2 : 方法的隐藏
class FatherObject
{
public void Test() // 无所谓是不是虚方法
{
Console.Write("Father Test()");
}
public void Test1()
{
this.Test();
}
}
class SonObject : FatherObject
{
public new void Test() // 对父类方法隐藏
{
Console.Write("Son Test()");
}
}
展开全部
你可以在重写classB和classC类的FUNA()方法的时候直接调用基类的方法呀
例如:
class B:A
{
....
public override void FUNA()
{
base.FUNA();
....
下面这里就是你重写的代码了。
}
}
例如:
class B:A
{
....
public override void FUNA()
{
base.FUNA();
....
下面这里就是你重写的代码了。
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以在你重写的代码中加上一句base.FUNA();
这样就可以在子类中既执行你重写的代码,也执行父类的代码了
这样就可以在子类中既执行你重写的代码,也执行父类的代码了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
using
System;
class
A
{
public
virtual
void
F()
{
Console.WriteLine("A.F");
}
}
class
B:
A
{
public
override
void
F()
{
base.F();
Console.WriteLine("B.F");
}
}
class
Test
{
static
void
Main()
{
B
b
=
new
B();
b.F();
A
a
=
b;
a.F();
}
}
System;
class
A
{
public
virtual
void
F()
{
Console.WriteLine("A.F");
}
}
class
B:
A
{
public
override
void
F()
{
base.F();
Console.WriteLine("B.F");
}
}
class
Test
{
static
void
Main()
{
B
b
=
new
B();
b.F();
A
a
=
b;
a.F();
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
classA A=new classA();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询