zoukankan      html  css  js  c++  java
  • 重载误区

    重载陷阱

    • 例子1 出现了重载还是重写?

        class Father{
        	public void test(){
        		System.out.println("父类的无参无返回值的方法");
        	}
        }
        class Son extends Father{
        	public void test(String info){
        		System.out.println("子类的有参无返回值的方法:" + info);
        	}
        }
      
        首先确定的是,一定不是重写,因为参数不一致。其次,重载的定义是发生在同一个类中的两个或多个方法,子类继承来的方法此时构成的是非严格意义的重载。子类两个test方法都能调用。
      
    • 例子2

        public static void test(int... args){
        //省略代码
        	for (int i = 0; i < args.length; i++) {
        	
        	}
        }
      
        //调用时,必须给一个int[]类型的实参
        public static void test(int[] args){
        //省略代码
        }
      
        编译报错。原因因为int...,编译时,按照数组处理的,只不过它比数组更灵活。也就是说,编译器认为定义了两个相同的方法。
        test(int... args)可以接受0~n个int的数值,或者是int[]
        test(int[] args)只可以接受int[]
      
    • 例子3 特殊的重写

        class Fu{
        	public void test(int... args){
        	//省略
        	}
        }
        class Zi extends Fu{
        //特殊的重写,int[]把int...特性覆盖掉了
        	@Override
        	public void test(int[] args){
        	//省略
        	}
        }
        
        一般的重写,不会改变传参机制;但是这个特例,子类把父类的方法覆盖了。
  • 相关阅读:
    从零开始学ios开发(十三):Table Views(下)Grouped and Indexed Sections
    求助三陀工作室
    2015.6-2017.6软件测试学习计划
    标签管理
    Git的分支管理(三)
    Git的分支管理(二)
    Git的分支管理(一)
    Git的远程仓库
    Git版本的管理
    Git的版本管理创建和修改
  • 原文地址:https://www.cnblogs.com/xingrui/p/9801291.html
Copyright © 2011-2022 走看看