オーバーロード
- 同じ名前で引数が異なるメソッドを複数定義すること。
- 同一クラスで行われる。
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円");
}
}
『オーバーロード』は複数定義、『オーバーライド』は再定義。
どちらもメソッドに関与する言葉だが用途は全く違うので混同注意!!!