复习笔记13 函数 重载 内联

来源:互联网 发布:php开发大型网站 编辑:程序博客网 时间:2024/06/06 01:03
public class Test14{void method(int arg0, int arg1){}//这种换参数名字的方式并不算重载//void method(int arg1, int arg0){}//参数列表类型的排列组合不一样,可以形成重载void method(int arg0, byte arg1){}//参数类型位置调换也可以形成重载void method(byte arg0, int arg1){}//参数个数不一样也可以形成重载void method(int arg0, int arg1, int arg2){}//返回值类型不同也不算重载,jvm会不知道应该使用//哪个函数,但也不是无法避免//char method(int arg0, int arg1){}//如果对于相同参数列表的函数,有多种返回值,//可以在函数内实现重载的情况,返回值为Object//Object method(int arg0, int arg1){}/** * 这里我们可以想一下,如果我们不知道需要多少个参数 * 比如求任意个 数的和,难道还能定义无数个函数?因为 * 我们并不知道用户会什么时候调用那些个组合的函数 *  * 在老版本的java里,老程序员对于这种方式的处理, * 都是采用数组为参数来处理的。 *///像main函数吧void method(int[] args){//我们这里的调用方式就将是这样,但写起来会很麻烦method(new int[]{1,2});method(new int[]{1,2,3,4,5});}//可变参数列表,该参数列表表示支持任意个数的参数//这个新特性也是专门为了解决上边的问题而出现的,//虽然实现是一样的,但更简便void method$1(int... arg0){ //for examplemethod$1(1,2);method$1(1,2,3,4,5);//由于这种可变参数的实现,是以数组来实现的//所以访问方面,也是用数组的方式arg0[0] = 1;//所以由上边的代码我们也可以这样调用method$1(new int[]{1,2});method$1(new int[]{1,2,3,4,5});}/** * 函数的内联 *  * 内联在重构中是很关键也是很重要的一种方式, * 简单来说,就是把一段很长的代码,不利于阅读 * 的代码分而治之,从而简化阅读以及维护 *///假设代码我们这样写,第一段和第二段代码都挤在一起//对于阅读的人来说很费劲,他不知道你的第二段功能是//怎么分割的,很不直观,所以得理解整个函数的功能之后//才能具体的区分出来,而有的代码耦合性非常高,单独//分离出功能会很费劲void A(){//case 1//case 2}//如果代码以这种方式来写,并对内联函数取个很形象的名字,//不论是别人阅读还是自己维护都会很方便,对于调试错误也//有帮助void B(){//case 1case1();//case 2case2();}void case1(){}void case2(){}/** * 内联是一种很实用的技巧,但也不能过渡使用,如果一个函数 * 最后被分割成成百上千的内联函数,最后只会变得更糟糕。 *  * 深度内联是最可耻的,比如a内联b和c,c又d和e,如此类推, * 最后想找一个关键功能要累死 */}

原创粉丝点击