- 浏览: 198517 次
文章分类
- 全部博客 (185)
- A Design Patterns (2)
- B Refactoring (0)
- C Test (2)
- D Software Engineering (0)
- E Other Tech Articles (4)
- F My Blog (0)
- G TechJie forum & QQ group (2)
- H Programmer (6)
- I 杂7杂8 (4)
- J Translations (0)
- [网站分类]1.首页原创精华.NET区(包含架构设计、设计模式)(对首页文章的要求:原创、高质量、经过认真思考并精心写作) (3)
- [网站分类]2..NET新手区(用于发表不合适发表在首页的.NET技术文章,包括小经验、小技巧) (14)
- [网站分类]3.非技术区(技术之外的文章,但不要涉及任何政治内容) (40)
- [网站分类]4.其他技术区 (9)
- [网站分类]5.企业信息化 (0)
- [网站分类]6.读书心得区(技术书籍阅读心得、书籍推荐) (8)
- [网站分类]7.提问区(.NET技术方面的提问) (6)
- [网站分类]8.技术转载区(.NET技术文章转载, 请注明原文出处) (24)
- [网站分类]9.求职招聘区(个人求职、企业招聘) (0)
- [网站分类]GIS技术 (0)
- [网站分类]SharePoint (0)
- [网站分类]博客园.NET俱乐部(俱乐部组织与活动方面的文章) (2)
- [网站分类]软件发布区(发布自己开发的代码、软件) (0)
- [网站分类]网站管理区(网站管理方面的疑问、建议、意见, 寻求管理员帮助) (0)
- [网站分类]业界新闻 (6)
最新评论
-
没有终点:
不懂 lz说的是啥 我太菜了
超简单SVN教程 -
韩悠悠:
超简单SVN教程 -
DraculaW:
orz...如果让他去写书很好奇这个作者会怎么解释vector ...
又见热书讨论《JavaScript征途》 -
gigix:
weiqingfei 写道为什么国内写书的都是烂人?
为什么高 ...
又见热书讨论《JavaScript征途》 -
weiqingfei:
为什么国内写书的都是烂人?为什么高手都不写书?
又见热书讨论《JavaScript征途》
当在类中指定方法时,如果有多个方法与调用兼容(例如,存在两种同名的方法,并且其参数与传递的参数兼容),则 C# 编译器将选择最佳方法进行调用。下面的方法将是兼容的:
C#
public class Derived : Base { public override void DoWork(int param) { } public void DoWork(double param) { } }
在 Derived 的一个实例中调用 DoWork 时,C# 编译器将首先尝试使该调用与最初在 Derived 上声明的 DoWork 版本兼容。重写方法不被视为是在类上进行声明的,而是在基类上声明的方法的新实现。仅当 C# 编译器无法将方法调用与 Derived 上的原始方法匹配时,它才尝试将该调用与具有相同名称和兼容参数的重写方法匹配。例如:
C#
int val = 5; Derived d = new Derived(); d.DoWork(val); // Calls DoWork(double).
由于变量 val 可以隐式转换为 double 类型,因此 C# 编译器将调用 DoWork(double),而不是 DoWork(int)。有两种方法可以避免此情况。首先,避免将新方法声明为与虚方法同名。其次,可以通过将 Derived 的实例强制转换为 Base 来使 C# 编译器搜索基类方法列表,从而使其调用虚方法。由于是虚方法,因此将调用 Derived 上的 DoWork(int) 的实现。例如:
C#
((Base)d).DoWork(val); // Calls DoWork(int) on Derived.
发表评论
-
Rhino Mocks To The Rescure
2006-11-23 09:17 791http://developernotes.com/archi ... -
Some high level concepts
2006-11-23 09:25 954http://structuremap.sourceforge ... -
Singletons Are Evil
2006-11-23 09:56 823http://c2.com/cgi/wiki?Singleto ... -
Best and Worst Practices for Mock Objects
2006-11-23 10:00 769http://codebetter.com/blogs/jer ... -
小函数:让你的函数变短的九个好处
2006-12-04 22:15 1130Small Methods: Nine Benefits ... -
UML序列图(zz)
2007-03-19 11:28 1282级别: 初级 Donald BellIBM 2005 年 2 ... -
One Assertion Per Test(zz)
2007-05-18 10:15 2178zz from :http://www.artima.co ... -
One Expectation Per Test(zz)
2007-05-18 10:18 810zz From: http://jupitermoonbeam ... -
Supervising Controller - Martin's "GUI Architectures" series (2)
2007-05-31 12:16 843zz from www.martinfowler.com To ... -
Presentation Model - Martin's "GUI Architectures" series (3)
2007-05-31 12:18 885zz from www.martinfowler.com To ... -
Passive View - Martin's "GUI Architectures" series (4)
2007-05-31 12:19 816zz from www.martinfowler.com To ... -
Rhino Mocks To The Rescure
2006-11-23 09:17 910http://developernotes.com/archi ... -
Some high level concepts
2006-11-23 09:25 883http://structuremap.sourceforge ... -
Singletons Are Evil
2006-11-23 09:56 699http://c2.com/cgi/wiki?Singleto ... -
Best and Worst Practices for Mock Objects
2006-11-23 10:00 601http://codebetter.com/blogs/jer ... -
小函数:让你的函数变短的九个好处
2006-12-04 22:15 807Small Methods: Nine Benefits ... -
UML序列图(zz)
2007-03-19 11:28 1629级别: 初级 Donald BellIBM 2005 年 2 ... -
重写方法不被认为是在类上声明的
2007-03-22 14:54 789当在类中指定方法时,如果有多个方法与调用兼容(例如,存在两 ... -
One Assertion Per Test(zz)
2007-05-18 10:15 793zz from :http://www.artima.co ... -
One Expectation Per Test(zz)
2007-05-18 10:18 1215zz From: http://jupitermoonbeam ...
相关推荐
2. **方法重写**:子类中出现的方法如果名称、参数列表与父类中的方法完全相同,则认为是方法重写。重写时,子类方法的返回类型必须与父类方法兼容或更具体,权限修饰符不能更低。 3. **包管理**:Java使用包来组织...
方法是类中定义的功能单元,用于实现特定的行为。方法可以接受参数,并返回结果。在Java中,方法定义通常包括返回类型、方法名、参数列表和方法体。 #### 50. 方法局部变量 (Method Local Variables) 方法局部变量...
在某些情况下,`final`是必需的,例如在方法中的匿名内部类中,需要传递一个不可变的参数。`final`变量可以确保在内部类中引用外部类的变量时,该变量的值不会在内部类中被意外修改。 3. **使用方法**: - **修饰...
根据提供的文档信息,我们可以总结并深入探讨以下几个关键的Java知识点: ### 1. 方法重载(Overloading) **概念:** 方法重载是指在一...这是因为`final`修饰的方法不能被子类重写,这确保了方法的行为不会被改变。
描述中指出,错误的是C选项:父类中被`private`权限修饰的方法不能被子类重写,因为`private`方法在子类中不可见。子类方法的权限必须至少等于父类中被重写方法的权限,且子类重写接口中的方法必须是`public`的,...
描述中提到的错误选项C指出,父类中被`private`权限修饰的方法可以被子类重写,这是不正确的。Java中,`private`方法不能被子类访问,因此也就无法重写。正确的是,子类要重写父类方法,该方法在父类中必须是`public...
在实际开发中,如果设计的类不需要有子类,或者设计者认为此类已经足够完美,不应该被继承和修改,那么可以使用final来修饰此类。 2. final修饰成员变量:当final修饰成员变量时,该变量变成常量。final常量的命名...
在Java中,只有标记为`@Override`的方法才被认为是重写,这样可以避免因命名冲突而错误地覆盖其他方法。 在这个实例中,所有创建的类都将实现两个接口,这将展示如何通过接口实现多态性。同时,为了进一步展示Java...
- `final`:用于声明不可变的变量、不可继承的类或不可重写的变量。 - `finally`:异常处理中用于确保某个代码块一定会被执行。 - `finalize`:对象被垃圾回收前可以被调用的方法,用于释放资源。 **1.40 运行时...
设置纯虚函数的目的是防止抽象类被实例化,因为抽象类仅用于提供继承结构,不允许创建对象。这样可以确保只有具体类才能创建对象,从而保证了代码的安全性和设计的合理性。 【抽象类与具体类】的区别在于,抽象类不...
如果子类重写了父类的方法,它们共享同一个方法表项,被认为是父类的方法。 方法表中只包含非私有的实例方法,不包括静态方法。因为静态方法与对象无关,可以直接通过类名调用,而实例方法需要通过对象引用间接调用...
26. **声明不能被标记**:Java中,不能在声明上添加标签。 27. **continue必须在循环中**:continue只能在for、do、while循环中使用,不能在switch的case语句中。 28. **原始数组类型之间不能相互赋值**:尽管原始...
static方法跟类的任何实例都不相关,所以概念上不适用。 Java支持的数据类型有八种基本数据类型:byte、short、int、long、float、double、boolean、char。自动装箱是Java编译器在基本数据类型和对应的对象包装类型...
equals方法是Object类中的方法,用于比较两个对象的内容是否相等,但是需要在子类中重写此方法,比如String类已经重写了equals方法来比较两个字符串的内容。 11. 静态变量和实例变量的区别? 静态变量属于类,所有...
6. 构造函数:构造函数是类的一个特殊方法,用于初始化新创建的对象,其名字与类名相同,没有返回类型,正确的声明是`A(int x){...}`。 7. 类的继承:Java中类间的继承关系是单继承,即一个子类只能继承一个父类。 ...
final用于声明一个不能被继承的类、不能被重写的成员方法或不可修改的变量。finally用于try-catch结构中确保资源的释放。finalize是Object类的一个方法,用于垃圾回收时清理资源。 40. 运行时异常...
5. **final关键字**:final可以修饰类、变量和方法,修饰的变量一旦赋值后不可改变,修饰的类不能被继承,修饰的方法不能被重写。 6. **抽象类与抽象方法**:abstract关键字用于声明抽象类和抽象方法。抽象方法没有...