黑马程序员技术交流社区

标题: 虚方法 [打印本页]

作者: 谢玲    时间: 2012-12-18 10:16
标题: 虚方法
虚方法和抽象方法的区别??虚方法为什么不能用static修饰??
作者: 鲜学良    时间: 2012-12-18 10:29

虚方法的特点:
虚方法前不允许有static,abstract,或override修饰符
虚方法不能是私有的,因此不能使用private修饰符

作者: 吴伟    时间: 2012-12-19 16:07
抽象方法是只有定义、没有实际方法体的函数,它只能在抽象函数中出现,并且在子类中必须重写;虚方法则有自己的函数体,已经提供了函数实现,但是允许在子类中重写或覆盖。
static方法变成了静态方法,就跟具体的对象无关了,而虚方法是可以留给子类重写的,所以不可以。
abstract方法变成了抽象的,必须在子类重写。但是虚方法是可以在父类中有实现的,所以不可以。
override方法是在子类中重写的方法,而虚方法在子类中是可以不重写的,所以不可以。

作者: 梦ing    时间: 2012-12-19 16:16
虚方法(Virtual)重写:
1、  方法不能用static修饰
2、  方法重写与基类的签名必须一致
3、  Virtual不能与private一起使用
抽象方法由abstract修饰,抽象方法必须存在由abstract修饰的抽象类中,抽象方法没有方法体,抽象方法必须在抽象类中。
虚方法用Virtual修饰,要有方法体,可以被子类override(重写)。
抽象方法用avstract修饰,不允许有方法体,只能在抽象类中,必须被子类override。
作者: 唐海军    时间: 2012-12-19 16:23
抽象方法就是纯虚方法:只有定义,没有实现。private virtual foo() = 0;有抽象方法的类就是抽象类。 抽象类不能用来定义对象,必须要作为其他类的基类,并在派生类中重载抽象方法。
作者: 徐威    时间: 2012-12-19 16:54
抽象方法是只有定义、没有实际方法体的函数,它只能在抽象函数中出现,并且在子类中必须重写;虚方法则有自己的函数体,已经提供了函数实现,但是允许在子类中重写或覆盖。重写的子类虚函数就是被覆盖了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2