【Java】 方法重载和方法重写
超载
-
- 同じ名前で引数が異なるメソッドを複数定義すること。
- 同一クラスで行われる。
public class Main{
public static void main(String[] args) {
Sushi s = new Sushi();
s.neta("たまご");
s.neta("サーモン",220);
s.neta("いくら",480,"北海道");
s.neta("ウニ",800,"羅臼");
}
}
class Sushi {
void neta(String name) {
System.out.println(name + " 通常価格 110円");
}
void neta(String name,int price){
System.out.println(name + " 時価 " + price+ "円");
}
void neta(String name,int price,String area) {
System.out.println(area + name + " 時価 " + price + "円");
}
}
覆盖
-
- 継承時、親クラスと同じ名前のメソッドを子クラスで再定義すること。
- 継承クラス間で行われる。
public class Main{
public static void main(String[] args) {
Sushi s = new Sushi("うみ寿司");
event e = new event("10周年キャンペーン");
s.store();
s.neta("納豆巻き");
e.store();
e.neta("納豆巻き");
}
}
class Sushi { // 親クラス
String store;
Sushi(String store){
this.store = store;
}
void store(){
System.out.println(this.store);
}
void neta(String name) {
System.out.println(name + " 通常価格 110円");
}
}
class event extends Sushi { //子クラス
public event(String name) {
super(name);
}
void neta(String name) {
System.out.println(name + "通常価格 99円");
}
}
「オーバーロード」の定義は複数ありますが、「オーバーライド」は再定義されます。両方ともメソッドに関連している言葉ですが、使い方はまったく異なるので混同に注意してください!
「超載」這個詞有多種定義,「覆蓋」則是重新定義。雖然兩者都與方法相關,但用法完全不同,所以請注意不要混淆!