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){
        	//省略
        	}
        }
        
        一般的重写,不会改变传参机制;但是这个特例,子类把父类的方法覆盖了。
  • 相关阅读:
    unity 凸多形顶点排序
    unity Plane
    Git MAC电脑Git使用
    Spine运行库指南
    VsCode TypeScritp整理Import
    TypeScript 扩展声明文件 .d.ts
    UnityEditor 编辑多个场景里的对象,Revert 预制件实例
    unity 球形插值
    研究生基础咨询
    ACSM-CPT 考试资料
  • 原文地址:https://www.cnblogs.com/xingrui/p/9801291.html
Copyright © 2011-2022 走看看