• Java 方法重载 方法重写


    方法重载规则

    1. 参数个数不同
    2. 参数个数相同,但参数列表中对应的某个参数的类型不一样
    3. 方法的返回类型和参数名称不参与重载
    4. "编译期绑定",,因为未产生对象,只看参数、引用类型绑定方法

    	public void f(String s,int i) {}
    
    	public void f(int i,String s) {} //重载是正确的,这个点很难理解,大概是符合第二条规则
    
    	public void  f(String string ,int i,int j) {} //第一条规则
    
         // public int f(String s ,int i){}//重载错误,返回值不参与重载判定
    
         // public void f(String s1 ,int i1){}//重载错误,参数名不参与重载判定

    基本数据类型的重载

    • char变量如果没有char参数的方法,会进入int参数方法

    示例代码

    public class Override {
    
        //基本数据类型的重载
        void g(int ch) {System.out.println("char to int");}
    	
        public static void main(String[] args) {
    	Override override= new Override();
    	char ch= '5';
    	override.g(ch);
    	
        }
    }
    
    
    结果:char to int
    
    
    • 不存在byte,short常量,所有的不是long的整型数都是int,所以在进行基本数据重载时,要注意这点

    示例代码

    public class Override {
    	
    	//基本数据类型的重载
    	void f(char ch) {System.out.println("char");}
    	void f(int i) {System.out.println("int");}
    	void f(byte bt) {System.out.println("byte");}
    	void f(short st) {System.out.println("short");}
    	void f(long l) {System.out.println("long");}
    	
            public static void main(String[] args) {
    	Override override= new Override();
    	override.f(5);		
            }
    }
    
    
    结果:int

    方法重写(两同两小一大原则)

    • 方法名相同

    • 参数类型相同

    • 子类返回类型小于等于父类方法返回类型(基本数据类型必须等于,引用数据类型可以小于,Java中子类小于父类)

    • 子类抛出异常小于等于父类方法抛出异常

    • 子类访问权限大于等于父类方法访问权限

    • “运行期绑定”,因为产生了对象,所以看对象类型绑定方法

    class Father{
    
        void show();
       
        Father talk(){
            
            return null; 
        
        }
        
    }
    
    class Son extends Father{
    
        void show(); //正确,完全相同
        
        void show(){ //正确,子类重写父类方法
    
            super.show();
            System.out.print("show");
    
        }
    
        Son talk(){
    
            return null;
    
        }//正确,返回数据类型小于父类
    
    
        /* 错误
    
         * int show();类型错误,基本数据类型必须父子相同
         
         * Object talk(){
                
                return null;        
    
            }; 类型错误,引用数据类型必须父类大于等于子类
        
        
        */ 
    
    }
    
  • 相关阅读:
    oracle行转列
    JVM设置空间大小
    Spring AOP 业务权限管理
    清晨漫步
    pull解析xml(android)
    今昔何昔
    Spring: Document root element "beans", must match DOCTYPE root "null
    xfire
    心之所向
    Oracle数据库连接
  • 原文地址:https://www.cnblogs.com/jeasion/p/10758347.html
Copyright © 2020-2023  润新知