MENU
なお
じゃぱざむ運営主
20歳 | WEBメディアの会社で部長をやりながら、じゃぱざむ・特化メディア・WEB制作~コンサル・SEOディレクター・投資・就活相談など幅広くやっています。
いまい
エンジニア志望の大学生
21歳 | 理系の大学3年生|Webアプリ開発を勉強中。クラウド系の自社開発企業に内定。じゃぱざむでは、IT系記事の執筆とアイキャッチ画像の作成をしています。
【完全ガイド】大学生でもプログラミングで稼ぎ始めるためのロードマップ

【図解】オーバーライドとオーバーロードの違いは?

記事上バナー
テックキャンプの記事上バナー
レイズテックの記事上バナー
テックブーストの記事上バナー
いまいのアイコン画像いまい
こんにちは。大学のテストでオーバーライドとオーバーロードが違うものだと知った今井(@ima_maru)です。

今回は、オーバーライドとオーバーロードが別物ということをわかっていただくために、オーバーライドとオーバーロードの違いについて簡潔に解説します。

この記事のポイント!

オーバーライド ≠ オーバーロード
まったくの別物だよ

タップして好きなところから読めます

オーバーライドとオーバーロードの違い

この2つは2文字違いという、とても似たような名前がついているややこしいものですが、機能は違います。

オーバーライド(override)とは

オーバーライドとは日本語に訳せば「オーバー(上に)ライド(乗る)」「上書きする」という意味になります。

何かの上に乗るイメージです。

こちらは、継承と深く関わりのある機能です。

#include <iostream>
using namespace std;

class SuperClass {
public:
	void print() { cout << "親クラスだよ!" << endl; }
	void hoge() {}
	void foo() {}
};

class SubClass : public SuperClass {
public:
	/*オーバーライド*/
	void print() { cout << "子クラスだよ!" << endl; }
};

int main() {
	//親クラス
	SuperClass superClass;
	superClass.print();

	//子クラス
	SubClass subClass;
	subClass.print();
}
//実行結果
親クラスだよ!
子クラスだよ!

このように、継承先のクラスで継承したくない、もしくは内容を変えたい関数を再定義できるのがオーバーライドです。

オーバーライドのイメージは、「親子関係に成り立つ」です。

オーバーロードoverload)とは

オーバーロードとは日本語に訳せば「オーバー(上に)ロード(読みこむ)」という意味になります。

メンバメソッドを同じ名前で複数定義できる機能です。

こちらは上書きとは違い、同じもの(構造が違うが名前が同じもの)が同じ土台に複数存在しているイメージです。

#include <iostream>
using namespace std;

class Hoge {
public:
	void print()         { cout << "何も渡されなかったよ" << endl; }
	void print(int n)    { cout << "int型が渡されたよ" << endl; }
	void print(double n) { cout << "double型が渡されたよ" << endl; }
};

int main() {
	Hoge hoge;
	hoge.print();    //引数なし
	hoge.print(3);   //int型
	hoge.print(3.5); //double型
}
//実行結果
何も渡されなかったよ
int型が渡されたよ
double型が渡されたよ

このように、同じクラス内で同名の関数を複数定義できるのがオーバーロードです。

オーバーライドと違いオーバーロードのイメージは「同じ土台(クラス)に成り立つ」です。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
タップして好きなところから読めます
閉じる