c#中父类能调用子类的方法吗
9个回答
展开全部
我不太明白LZ问题的意思,"父类"是父类的引用还是实例?
在这个例子下:
class Father{}
class Child : Father
{
public void Method(){}
}
如果是实例,比如
Father fa=new Father();
那fa是不可以调用子类方法,逻辑上很容易得出结论,子类的方法可能调用到父类没有的成员,显然不可以调用.
如果是只引用,而且所指实例是子类
Father ch=new Child();
那么如下方法就可以调用子类方法了
(ch as Child).Method();
这种情况下,如果ch不是Child的实例,那会抛出异常(貌似是抛异常,LZ自己实践一下吧)。这是多态的一种基本实现方法。
在这个例子下:
class Father{}
class Child : Father
{
public void Method(){}
}
如果是实例,比如
Father fa=new Father();
那fa是不可以调用子类方法,逻辑上很容易得出结论,子类的方法可能调用到父类没有的成员,显然不可以调用.
如果是只引用,而且所指实例是子类
Father ch=new Child();
那么如下方法就可以调用子类方法了
(ch as Child).Method();
这种情况下,如果ch不是Child的实例,那会抛出异常(貌似是抛异常,LZ自己实践一下吧)。这是多态的一种基本实现方法。
展开全部
首先强调一点可以调仅仅可以调,不过如果这样做的话就成了普通类之间的调用了。这种方法不可取,失去了is-a关系的意义!应为就继承来说父类是优先于子类而存在的!上面说了可以通过类的实例来掉用。不过就父类于子类这种关系来说是不允许父类调用子类的。
参考资料: extends
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不可以,就是说,现有爸爸,再有儿子,儿子可以继承父亲的,但是父亲绝对不能继承儿子的。道理很简单
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以.实例化一下子类就像调用其他类一样.可以调用.我刚写了个示例证实了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
其实也不一定啊,父类可以通过实例调用子类继承的父类的相应方法啊。
举例(都是public):
class father
{
father refer;
string WriteSomething()
{
return refer.WriteSomething();
}
}
class son:father
{
overrides string WriteSomething(){ return "inherted"; }
}
然后执行这段代码:
father f = new father();
son s = new son();
f.refer = s;
Console.WriteLine(f.WriteSomething());
之后屏幕上就会显示"inherted"这段字符了
举例(都是public):
class father
{
father refer;
string WriteSomething()
{
return refer.WriteSomething();
}
}
class son:father
{
overrides string WriteSomething(){ return "inherted"; }
}
然后执行这段代码:
father f = new father();
son s = new son();
f.refer = s;
Console.WriteLine(f.WriteSomething());
之后屏幕上就会显示"inherted"这段字符了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询