黑马程序员技术交流社区
标题:
重构、重写、重载怎么好区别
[打印本页]
作者:
张海川
时间:
2012-9-16 16:35
标题:
重构、重写、重载怎么好区别
本帖最后由 张海川 于 2012-9-16 21:54 编辑
不要说的复杂化,越清晰越好
作者:
孔德智
时间:
2012-9-16 16:38
重构:为了提高运行效率,经常要进行程序模块化,相同的模块可以反复使用
重写:方法的重写一定在不同的两个类里面,而且必须写在派生类里面
重载:方法的重载有基于不同数量的参数方法的重载,还有基于不同类型的参数方法的重载,方法的重载是在同一个类里面。
作者:
张青江
时间:
2012-9-16 17:54
重构
是在编写代码后在不更改代码的外部行为的前提下通过更改代码的内部结构来改进代码的过程。
重写(override)
含义:要扩展或修改继承的方法、属性、索引器或事件的抽象实现或虚实现,必须使用 override 修饰符。
局限:
override 方法提供从基类继承的成员的新实现。 由 override 声明重写的方法称为重写基方法。 重写的基方法必须与 override 方法具有相同的签名。
不能重写非虚方法或静态方法。 重写的基方法必须是 virtual、abstract 或 override 的。
override 声明不能更改 virtual 方法的可访问性。 override 方法和 virtual 方法必须具有相同的访问级别修饰符。
您不能使用 new、static 或 virtual 修饰符来修改 override 方法。
重写属性声明必须指定与继承属性完全相同的访问修饰符、类型和名称,并且被重写的属性必须是 virtual、abstract 或 override 的。
重载
是指方法名称相同, 只是参数个数或类型不同. 方法功能是相同的.
除了重载, 还要了解以下几个关键字的用法,与区别:
virtual 定义为虚方法
override 对虚方法实现,具有多态性
new 把基类中的同名方法替换掉, 不具有多态性
作者:
冯雅伦
时间:
2012-9-16 21:50
重写,顾名思义就是去掉原来方法中的内容,然后写上新的方法。方法名不变,变得是方法的具体内容
重载,就是把原来的方法中的变量信息(类型,变量数等等)改了,来实现功能。实验:你可以使用VS,调用一个C#封装好的方法,查看其重载,C#封装的大部分方法都有重载。例如Console.WriteLine()。
作者:
郎乐乐
时间:
2012-9-16 21:58
区别很好看出来,
重构:就是去修改代码,比如一个方法 不修改它的参数和返回 只修改它的内部运算。
重写:看看有没有override 是实现多态性
重载:就是看看有没有和这个方法名称一样的方法。(单不是完全一样,完全一样的方法会出错)
作者:
刘进朝
时间:
2012-9-20 16:27
重载:
public class Circle {
private int x,y,r;
private double pi=3.1415;
public Circle(int x,int y) {
this.x=x;
this.y=y;
r=1;
this.prt();
}
public Circle(int x,int y,int r) {
this.x=x;
this.y=y;
this.r=r;
this.prt();
}
public void prt() {
System.out.println("x="+x+",y="+y+",r="+r);
}
public static void main(String[] args) {
Circle c1=new Circle(10,10);
Circle c2=new Circle(20,20,10);
}
}
覆盖:
class PrintFather {
int i=1;
public void prt() {
System.out.println("i="+i);
}
}
public class PrintOverriden extends PrintFather {
String name="PrintOverriden";
public void prt() {
System.out.println("Name="+name);
System.out.println("i="+i);
}
public static void main(String[] args) {
PrintOverriden p=new PrintOverriden();
p.prt();
}
}
重构:
是针对代码,写得不好自然要重新来写,这就是重新构造代码.
作者:
侍小波
时间:
2012-9-25 18:01
重构:就是代码优化,或则你可以理解为代码的修改!
例:开始你的类名是A现在要改为B也称为重构的一种
重载:发生在同一类中,方法名相同,参数列表不同
重写:发生在父子类中,子类中有一个方法名,参数列表和返回值类型与父类相同的方法完全相同时, 称之为方法重写
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2