A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

面向对象中,在派生类中可以new或override一个基类中已存在的方法,这两者有什么区别?

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

3 个回复

倒序浏览
new这个关键字常用3个功能:
作为修饰符;作为运算符用来创建一个对象和调用构造函数; 用于在泛型声明中约束可能用作类型参数的参数的类型。
Override关键字主要是提供派生类对基类方法的新实现,重写的基类方法必须和Override的方法具有相同的签名,此关键字不可以用于重写非虚方法和静态方法,与其配套使用的关键字是Virtual、abstract。
new和override  的最大区别是override 与 virtual的搭配使用!

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
new关键字跟继承没有关系,可以用在一个类的子类。当子类的一个方法用到new(这个方法可以和基类的一个方法同名,也可以不同),调用的时候会运行基类的同名方法,而不会调用子类有new关键字的方法;override只是在继承的时候才会用到,用在子类要覆盖基类方法的方法。当一个子类的方法用到override 关键字,在调用的时候会运行子类中相应的方法。

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
@Override 字面翻译就是覆盖的意思。
导出类对超类的覆盖,如果你想覆盖的话,在esclipes中,它自动提示你覆盖那个方法,避免覆盖错误,当然你不用它也可以覆盖到处类的方法。
new +构造方法的作用是:创建一个对象,实例化一个对象。
所以两个不可同日而语。呵呵!

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马