JAvaでのリロードと書き換え(overriding)
6820 ワード
目次一:方法の重荷(overloading) 二:メソッドの書き換え(overriding) リロードとリライトはJavaの多態性の異なる表現である:リライトは親クラスと子クラスの間の多態性の表現であり、実行時に作用する(動的多態性、例えば動的バインドを実現する)が、リロードはクラスの中の多態性の表現であり、コンパイル時に作用する(静的多態性、例えば静的バインドを実現する)
一:メソッドのリロード(overloading)
メソッドリロードとは、クラスでメソッド名が同じで、パラメータが異なる複数のメソッドを定義することです(戻り値タイプは任意で、戻りタイプをリロード関数の区別基準とすることはできません).
二:方法の書き換え(overriding)
定義:メソッドの書き換えはメソッドの上書きとも呼ばれ、子クラスでメソッドが親クラスと同じ名前とパラメータを定義すると、メソッドが書き換えられます.
親クラスに存在するメソッドを使用して、superキーを使用します.このキーは、現在のクラスの親を参照します.
Javaでは変数を継承する値の問題があります.親の静的変数の関連付けは変更され、非静的変数は変更されません.
継承チェーン内のオブジェクトメソッドの呼び出しには、次のような優先順位があります.
一:メソッドのリロード(overloading)
メソッドリロードとは、クラスでメソッド名が同じで、パラメータが異なる複数のメソッドを定義することです(戻り値タイプは任意で、戻りタイプをリロード関数の区別基準とすることはできません).
:
1. ;
2. ;
3. 。
public class mine {
//
public mine(){
System.out.println(" ");
}
//
public mine(Object obj){
System.out.println(" ");
}
//
public String info(String str){
System.out.println("1");
}
//
public String info(String str,int i){
System.out.println("2");
}
public String info(int i,String str){
System.out.println("3");
}
}
二:方法の書き換え(overriding)
定義:メソッドの書き換えはメソッドの上書きとも呼ばれ、子クラスでメソッドが親クラスと同じ名前とパラメータを定義すると、メソッドが書き換えられます.
(1) , private protected , , 。
(2) 、 , 。
(3) ;
親クラスに存在するメソッドを使用して、superキーを使用します.このキーは、現在のクラスの親を参照します.
Javaでは変数を継承する値の問題があります.親の静的変数の関連付けは変更され、非静的変数は変更されません.
継承チェーン内のオブジェクトメソッドの呼び出しには、次のような優先順位があります.
this.show(Object)>super.show(Object)>this.show((super)Object)>super.show((super)Object)
//A
public class A {
public String show(int o){
System.out.println("A o");
}
}
//B
public class B extends A {
public String showA() {
super.show(int o);
// A o, B A
}
public String show(int o) {
System.out.println("B o");
}
}