重写是 子类重写父类中的同名方法, 参数个数 参数类型 和返回类型都一样。重载是在一个类中 参数个数 或者 参数类型不同多个重名方法。那请问重构是什么概念呢 什么时候用 怎么用 还有要注意的事项是什么呢?
(我只知道子类可以重构父类中的构造函数,通过 super.[构造函数(根据需要填写不同的参数(父类中要有))]。感觉用的不是很多面试可能碰到,希望好心人能说的详细点,谢谢了。)
(我只知道子类可以重构父类中的构造函数,通过 super.[构造函数(根据需要填写不同的参数(父类中要有))]。感觉用的不是很多面试可能碰到,希望好心人能说的详细点,谢谢了。)
解决方案 »
- equals方法的问题
- java调用jmagick在main方法执行成功;部署到tomcat中报错且tomcat退出:---------请高手指点下
- 今天无意中看到公司给别人出的面试题
- java 一个单选按钮可以同时帮定 onclick 和onchange事件吗 急!!
- 我用SSH架构的项目运行报如下错误,请问各位这个错误如何解决
- JS 弹出的子页面如何定位是哪行的错误。
- 如何动态获取一个对象的名字
- 关于DWR DWRUtil is not defined 错误
- 为什么接受到session值为NULL
- 一个JAVA&J2EE交流群(MSN):[email protected]
- struts2错误InvocationTargetException
- MyEclipse与Tomcat,工程名部署问题
通过重构主要是提升代码质量,而不是增加功能。重构最常见的动作包括:
函数的拆分(大方法变小方法)
重复代码的合并,
方法的迁移(放到更合适的类中)。
Eclipse对重构支持挺好的。
重构是改变代码结构,不改变功能,使代码更易维护,更易阅读,等等。。
lz如果是问构造函数的问题不。有一句话,生成子类对象时,一定会先生成父类对象。所以一定会调用父类的构造方法
Overloading在一个类中可以定义多个同名方法,各个方法的参数表一定不同。但修饰词可能相同,返回值也可能相同。
在程序的编译过程中根据变量类型来找相应的方法。Overloading被认为是编译时的多态。Overloading 只是为方便程序员编程的解决方法,编译之后的方法名实际加上了各参数类型成为唯一的名字。普通方法
public void aa(int a,double b) throws IOException{}
private int aa(double a,int b){}
protected double aa(String a,String b){}
构造方法也可以实现overloading。
例:
public void teach(){};
public void teach(int a){};
public void teach(String a){}为三种不同的方法。Overloading方法对于不匹配的参数是从低向高转换的。
Byte—short—float—int—long—double。System.out.println(“%5.2f,%10.3f”, num,num2); 按格式输入7.3.1. 方法的覆盖(overridding)
当子类从父类继承一个无参方法,而又定义了一个同样的无参方法,则子类新写的方法覆盖父类的方法,称为覆盖。(注意返回值类型也必须相同,否则编译出错。)
如果方法参数表不同,则成重载。
特点:
1.对于方法的访问限制修饰词,子类方法要比父类的访问权限更高。
父类为public,那么子类为private则出现错误。
2.子类抛出的异常应该是父类抛出的异常或其子类
父类的非私有化属性(不同包的子类无法访问default修饰符)和方法可以默认继承到子类。
Class Son extends Father{
}
而如果父类中的私有方法被子类调用的话,则编译报错。
父类的构造方法子类不可以继承,更不存在覆盖的问题。
所以子类构造方法默认调用父类的无参构造方法。(所以养成写无参构造的习惯)
如果子类访问父类的有参构造方法,必须在子类构造方法第一行使用super(参数)
当构造一个对象的时候,系统先构造父类对象,再构造子类对象。
Public class BMWcar extends Car{
Public BMWcar(){
Super(int alength); //显式的调用父类的构造,默认调用无参构造
//所以父类没有无参构造的话,子类如果不加显示调用其他构造就会报错。这里的super是一个对父类的引用
}
}