方法的重写:也称为方法覆盖,当子类继承父类时,父类中的public和protected修饰的属性和方法可以被子类继承,但是父类中的方法在某些情况下不能够满足子类的需求,所以需要对其进行修改.

方法的重载:在一个类中我们可以定义多个相同方法名的方法,但是这些方法不能够具有相同的参数列表,这样的一种形式我们称之为方法的重载.

比较方法的重载与重写:

 

方法重写

方法重载

定义

对从父类继承过来的方法进行改写

在一个类中定义多个方法名相同的方法

范围

对于两个类而言(子类和父类)

一个类中

方法名

子类和父类方法名一致

多个方法名一致

参数

子类中方法的参数要和父类一致

参数列表不能相同(类型,个数,顺序)

返回值

子类中方法的返回值要和父类一致

多个方法的返回值可以相同也可以不同

修饰符

子类中修饰符不能比父类中更严格

无限制

方法重写的例子:

 

 
  1. public class Father { 
  2.      
  3.     public void print(){ 
  4.         System.out.println("这是父类中的print方法"); 
  5.     } 

 

 
  1. public class Son extends Father { 
  2.      
  3.     /** 
  4.      *子类对父类中继承过来的方法进行改写 
  5.      *1,方法名、参数、返回值必须和父类一致 
  6.      *2,访问权限不能比父类中对应的方法更为严格 
  7.      */ 
  8.     public void print(){ 
  9.         System.out.println("这是儿子重写的父类中的方法"); 
  10.     } 
  11.      

方法重载的例子:

 

 
  1. public class MyClass { 
  2.     private String name; 
  3.     private String pass; 
  4.     /** 
  5.      * 方法的重载是指:在一个类中可以定义多个方法名相同的方法 
  6.      * 但是这多个方法的参数列表不能相同(包括:类型不同,参数的个数不同,顺序不同) 
  7.      * 构造器也是可以重载的 
  8.      * 在方法调用的时候就是通过传递给方法的参数来区别每一个方法 
  9.      */ 
  10.     public MyClass(){ 
  11.          
  12.     } 
  13.     public MyClass(String n){ 
  14.         name = n; 
  15.     } 
  16.     public MyClass(String n ,String s){ 
  17.         name = n; 
  18.         pass= s; 
  19.     } 
  20.  
  21.     public void print(int c){ 
  22.         System.out.println("int"); 
  23.     } 
  24.     private int print(int c,int b){ 
  25.         System.out.println("int"); 
  26.         return 1
  27.     } 
  28.      void print(int c,String b){ 
  29.         System.out.println("int"); 
  30.     } 
  31.      
  32.     protected void print(String c,int b){ 
  33.         System.out.println("int"); 
  34.     } 
  35.      
  36.     public void print(byte b){ 
  37.         System.out.println("byte"); 
  38.     } 
  39.     public void print(String str){ 
  40.         System.out.println("string"); 
  41.     } 
  42.     public void print(long l){ 
  43.         System.out.println("long"); 
  44.     } 
  45.