class SecondExp
{ public int firstMethod()
{ return(secondMethod()*thirdMethod()); } public int secondMethod()
{ return(10); } public int thirdMethod()
{ return(20); } } class DerivedClass : SecondExp
{
public new int secondMethod()
{ return (30); }
}
class Test
{
public static void Main()
{ //第一种:
SecondExp objDerived = new DerivedClass();
objDerived.secondMethod(); //注意这种方法
//第二种:
DerivedClass objDerived = new DerivedClass();
objDerived.secondMethod(); //注意这种方法System.Console.WriteLine(objDerived.firstMethod());
}
}
{ public int firstMethod()
{ return(secondMethod()*thirdMethod()); } public int secondMethod()
{ return(10); } public int thirdMethod()
{ return(20); } } class DerivedClass : SecondExp
{
public new int secondMethod()
{ return (30); }
}
class Test
{
public static void Main()
{ //第一种:
SecondExp objDerived = new DerivedClass();
objDerived.secondMethod(); //注意这种方法
//第二种:
DerivedClass objDerived = new DerivedClass();
objDerived.secondMethod(); //注意这种方法System.Console.WriteLine(objDerived.firstMethod());
}
}
解决方案 »
- 关于ajaxPro7.7.31.1 的( this.onTimeout is not a function)
- IIS6在XP的系统下如何安装配置?在线等
- 查上一条和下一条
- 高手求教!!如何asp.net中使用FileUpload控件上传文件!!急急急!
- 如何在状态栏上显示一个Session值,比如“当前用户:”+session ,并且点击页面上的链接时,状态栏上的内容不变。
- 请问我要在下个CS类里用Session怎么用,要不要加什么namespace?
- 关于session的保存时间??第二次问!
- 请问如何在一个事件中间产生一个postback效果呢?
- 刚学ASP.NET,请高手帮忙!
- 一个比较难的问题,请高手帮忙
- 急求2篇关于asp.net的英文文献!毕业设计用!
- 求助,取值加1的辦法
父类的引用(SecondExp objDerived)指向一个子类的对象(new DerivedClass()) 而且方法secondMethod()在子类中使用new进行声明 所以使用的规则是"谁的声明就用谁的方法" 也就是说使用的是父类的secondMethod方法
同理分析 第二种情况下
使用的是子类的secondMethod方法
则不管是SecondExp objDerived = new DerivedClass()
还是DerivedClass objDerived = new DerivedClass()
调用的都将是子类的已经重写的secondMethod()
在派生类override以后,才有多态
如果使用new关键字,是隐藏,基类的方法与派生类的方法是毫无关系的两个方法
用类型为基类的对象,调用的是基类的方法
父类的引用(SecondExp objDerived)指向一个子类的对象(new DerivedClass()) 而且方法secondMethod()在子类中使用new进行声明 所以使用的规则是"谁的声明就用谁的方法" 也就是说使用的是父类的secondMethod方法
同理分析 第二种情况下
使用的是子类的secondMethod方法
我子类中如果没有NEW的话还是调用的父类的方法
-------
既然使用new覆盖说明你知道这样做的结果...既然知道结果说明你愿意接受这种方式...既然是你自愿的...还有什么疑问?
"我子类中如果没有NEW的话还是调用的父类的方法"
只能说明你使用的是SecondExp objDerived = new DerivedClass()中的objDerived(一个声明为父类的对象)来调用的方法只要你不是"override" 就遵循"谁的声明就用谁的方法"