码迷,mamicode.com
首页 > 编程语言 > 详细

详细讲解Java中方法的重载和重写

时间:2015-08-29 15:19:45      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:

首先讲讲方法的重载:

  Java的重载就是在类中可以创建多个方法,它们具有相同的名字,但是却有不同的参数。

  判断是否重载只有两个条件:

  1)相同的方法名 

  2)不同的参数 具体为:

    A、方法参数类型不同 

    B、方法参数个数不同 

    C、方法参数排列顺序不同

  代码如下:

 

package com.tocean.test;//包名
public class Test1 {
    public void name(int i){       
        System.out.println("overloading");    
    }  
      
    //方法类型不同    
    public void name(String name){  
        System.out.println("overloading");       
     }       
    //方法参数个数不同  
    public void name(int i,String name,double c){             
        System.out.println("overloading"); 
    }
    //参数的排列顺序不同
    public void name(double c,int i ,String name){
        System.out.println("overloading");
     }
}  

 

  与方法返回值权限修饰符无关 

  代码如下:

 

 1 package com.tocean.test;//包名
 2 public class Test1 {
 3     //与方法返回值无关  
 4     public int name(int i,String name){        
 5         return i;            
 6     }       
 7     //与权限修饰符无关   
 8     private void name(double c) {       
 9         System.out.println("overloading");      
10     }
11 }

 

 

另外是方法的重写:

  Java的重写前提是继承,继承的子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要方法的重写。

  判断是否重写有五个条件:

    A、相同的方法名

    B:相同的方法参数

    C:权限修饰符不能比父类更窄

    D:抛出异常比父类不能更多

    E:返回值和父类返回值一致或是其子类

  代码如下:

package com.tocean.test;

public class Father {
    public void getSay(String str){
        System.out.println("父类在说:"+str);
    }
}

class Son extends Father{
    //访问修饰符不能比父类更窄、不是方法重写
    private void getSay(String str){
        System.out.println("子类在说:"+str);
    }
}

 

package com.tocean.test;

import java.io.IOException;

public class Father {
    public void getSay(String str) throws Exception{
        System.out.println("父类在说:"+str);
    }
}

class Son extends Father{
    //抛出的方法比父类更多,不是方法的重写(注意是异常的数量,不是异常的范围)
    private void getSay(String str) throws IOException,RuntimeException{
        System.out.println("子类在说:"+str);
    }
}
package com.tocean.test;

public class Father {
    public String getSay(String str) {
        System.out.println("父类在说:"+str);
        return str;
    }
}

class Son extends Father{
    //方法的返回值与父类相同,是方法的重写
    public String getSay(String str) {
        System.out.println("子类在说:"+str);
        return str;
    }
}
package com.tocean.test;

public class Father {
    public Object getSay(String str) {
        System.out.println("父类在说:"+str);
        return str;
    }
}

class Son extends Father{
    //方法的返回值与父类不相同相同,但是其的子类,是方法的重写
    public String getSay(String str) {
        System.out.println("子类在说:"+str);
        return str;
    }
}

 

详细讲解Java中方法的重载和重写

标签:

原文地址:http://www.cnblogs.com/crt-share/p/4769130.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!