Javaでのリロードと書き換え
Javaではメソッドのリロードと書き換えがJava全体の学習と運用に貫かれ、面接でもよく聞かれます.
一方法の重荷
次の条件を満たすには、次の手順に従います.
1同じクラスで;
2同名の異なるパラメータ:ここでのパラメータの違いには、パラメータのタイプが異なり、パラメータの個数が異なり、パラメータの順序が異なることが含まれます.
注意:
1 リロードはメソッドの戻り値に要求されません.
2構造方法でもリロードできます.
メソッドのリロード例:
以上、構造方法Person()と一般方法Move()の重荷重
リロードメソッドは呼び出し時に,入力パラメータの違いによって区別される.
二方法の書き換え(上書き、上書き)
次の条件を満たします.
1親子の間;
2同じ名前で同じパラメータで、戻り値のタイプも同じです.
3サブクラスメソッドの修飾子は、親メソッドの修飾子よりも閉じられません.
4サブクラスメソッドから放出される例外は、親メソッドから放出される例外よりも広くはなりません.
例を次に示します.
親Person:
サブクラスStudio:
これによりmove()メソッドの書き換えが構成される.
説明:
1 Personのメソッド修飾子はprotectedなので、Studentクラスのmove()メソッドの修飾子はprotectedであってもpublicであってもよい.
2 Personのmove()メソッドはRuntimeExceptionを放出するので、Studentのmove()メソッドはRuntimeException、またはRuntimeExceptionのサブクラスしか放出できず、Exception、IOExceptionなどは放出できません.
一方法の重荷
次の条件を満たすには、次の手順に従います.
1同じクラスで;
2同名の異なるパラメータ:ここでのパラメータの違いには、パラメータのタイプが異なり、パラメータの個数が異なり、パラメータの順序が異なることが含まれます.
注意:
1 リロードはメソッドの戻り値に要求されません.
2構造方法でもリロードできます.
メソッドのリロード例:
- package com.anjoyo.demo;
-
- public class Person {
- private String name;
- private int age;
-
- public Person() {
- }
- public Person(String name, int age) {
- this.name = name;
- this.age = age;
- }
- public void move(){
- System.out.println("can move !");
- }
- public void move(String s){
- System.out.println(s+" can move !");
- }
-
- }
以上、構造方法Person()と一般方法Move()の重荷重
リロードメソッドは呼び出し時に,入力パラメータの違いによって区別される.
二方法の書き換え(上書き、上書き)
次の条件を満たします.
1親子の間;
2同じ名前で同じパラメータで、戻り値のタイプも同じです.
3サブクラスメソッドの修飾子は、親メソッドの修飾子よりも閉じられません.
4サブクラスメソッドから放出される例外は、親メソッドから放出される例外よりも広くはなりません.
例を次に示します.
親Person:
- package com.anjoyo.demo;
-
- public class Person {
- protected void move() throws RuntimeException{
- System.out.println("can move !");
- }
- }
サブクラスStudio:
- package com.anjoyo.demo;
-
- public class Student extends Person{
- public void move() throws NullPointerException{
- System.out.println("Student running !");
- }
- }
これによりmove()メソッドの書き換えが構成される.
説明:
1 Personのメソッド修飾子はprotectedなので、Studentクラスのmove()メソッドの修飾子はprotectedであってもpublicであってもよい.
2 Personのmove()メソッドはRuntimeExceptionを放出するので、Studentのmove()メソッドはRuntimeException、またはRuntimeExceptionのサブクラスしか放出できず、Exception、IOExceptionなどは放出できません.