オーバーロード、継承、オーバーライド、ポリモーフィズムの違い:
1) 継承とは、サブクラスが親クラスのメンバーを取得することです。
2) オーバーライドとは、継承後に親クラスを再実装する方法です。
3) オーバーロードとは、クラス内で異なるパラメーターと同じ名前を持つ一連のメソッドです。
4) ポリモーフィズムは、コードが肥大化して保守が困難になる、親クラスでの多数のオーバーロードを回避するためのものです。
インターネットで見た興味深い記述は次のとおりです。継承はサブクラスが親クラスを使用するためのメソッドであるのに対し、ポリモーフィズムは親クラスがサブクラスを使用するためのメソッドです。
次の例には、次の 4 つの実装が含まれています。
クラス Triangle extends Shape {
public int getSides() {
3 を返します。
}
}
クラス Rectangle extends Shape {
public int getSides(int i) {
私を返します。
}
}
パブリック クラス Shape {
パブリックブール値 isSharp(){
true を返します。
}
public int getSides(){
0を返します。
}
public int getSides(Triangle tri){
3 を返します。
}
public int getSides(Rectangle rec){
4 を返します。
}
public static void main(String[] args) {
三角形 tri = 新しい Triangle();
System.out.println(「三角形はシャープの一種ですか? 」 + tri.isSharp());
形状の形状 = new Triangle();
System.out.println(“私の形状には ” + Shape.getSides() + ” 側面があります。”);
}
}
赤はオーバーロード、緑は上書き、青は継承、ピンクはポリモーフィズム
Triangle クラスのメソッドはオーバーライドされるのに対し、Rectangle クラスのメソッドはオーバーロードされることに注意してください。
赤とピンクの部分を比較すると、オーバーロードに対するポリモーフィズムの利点がわかります。オーバーロードを使用する場合、エッジの数を取得するメソッドは、ポリモーフィズムを使用する場合は各サブクラスの親クラスでオーバーロードする必要があります。どの形状の辺の数をどのように取得するかについては、それぞれサブクラスで実装(書き換え)します。