Javaでのリロードと書き換え


Javaではメソッドのリロードと書き換えがJava全体の学習と運用に貫かれ、面接でもよく聞かれます.
一方法の重荷
次の条件を満たすには、次の手順に従います.
  1同じクラスで;
  2同名の異なるパラメータ:ここでのパラメータの違いには、パラメータのタイプが異なり、パラメータの個数が異なり、パラメータの順序が異なることが含まれます.
注意:
  1 リロードはメソッドの戻り値に要求されません.
  2構造方法でもリロードできます.
メソッドのリロード例:

  
  
  
  
  1. package com.anjoyo.demo;  
  2.  
  3. public class Person {  
  4.     private String name;  
  5.     private int age;  
  6.       
  7.     public Person() {  
  8.     }  
  9.     public Person(String name, int age) {  
  10.         this.name = name;  
  11.         this.age = age;  
  12.     }  
  13.     public void move(){  
  14.         System.out.println("can move !");  
  15.     }  
  16.     public void move(String s){  
  17.         System.out.println(s+" can move !");  
  18.     }  
  19.       
  20. }  

以上、構造方法Person()と一般方法Move()の重荷重
リロードメソッドは呼び出し時に,入力パラメータの違いによって区別される.
二方法の書き換え(上書き、上書き)
次の条件を満たします.
  1親子の間;
  2同じ名前で同じパラメータで、戻り値のタイプも同じです.
  3サブクラスメソッドの修飾子は、親メソッドの修飾子よりも閉じられません.
  4サブクラスメソッドから放出される例外は、親メソッドから放出される例外よりも広くはなりません.
例を次に示します.
親Person:

  
  
  
  
  1. package com.anjoyo.demo;  
  2.  
  3. public class Person {  
  4.     protected void move() throws RuntimeException{  
  5.         System.out.println("can move !");  
  6.     }  
  7. }  

サブクラスStudio:

  
  
  
  
  1. package com.anjoyo.demo;  
  2.  
  3. public class Student extends Person{  
  4.     public void move() throws NullPointerException{  
  5.         System.out.println("Student running !");  
  6.     }  
  7. }  

これによりmove()メソッドの書き換えが構成される.
説明:
  1  Personのメソッド修飾子はprotectedなので、Studentクラスのmove()メソッドの修飾子はprotectedであってもpublicであってもよい.
  2 Personのmove()メソッドはRuntimeExceptionを放出するので、Studentのmove()メソッドはRuntimeException、またはRuntimeExceptionのサブクラスしか放出できず、Exception、IOExceptionなどは放出できません.