Javaプログラミング言語での継承の調査

Javaプログラミング言語での継承の調査

継承は、オブジェクト指向プログラミングのコアコンセプトの1つです。プログラミングでは、継承という言葉は、子クラスが親クラスの状態と動作を想定する関係を表します。





ソフトウェア開発における継承の目的は、安全で信頼性の高いソフトウェアの再利用を促進することです。継承を使用する主な利点の1つは、プログラム内の冗長なコードを排除することです。





Facebookで女の子に尋ねる

継承のしくみ

継承の背後にある考え方は、多くのクラスまたはオブジェクトが同じ属性とメソッドのセットのいくつかを持っているということです。したがって、信頼性の高いソフトウェアを作成するという精神で、新しいクラスは既存の関連クラスから取得でき、必要に応じて既存の状態と動作を拡張できます。





継承がどのように機能するかの実際の例は、果物を検討することです。これは、さまざまなアイテムをカプセル化するのに役立つ幅広いラベルです。

リンゴは果物であり、オレンジも果物です。ただし、オレンジはリンゴではないため、店舗を所有している場合は、在庫アイテムの1つとして果物を使用することはできません。おそらく、在庫に果物のセクションがあり、そのセクションの下に、リンゴやオレンジなどのより具体的なアイテムがあります。



それが継承の仕組みです。

Javaでの継承の使用

継承は、オブジェクト指向プログラミングパラダイムを使用する任意のプログラミング言語で使用できます。ただし、継承が使用される正確な方法は、特定のプログラミング言語によって異なります。





例えば、 C ++はオブジェクト指向プログラミング言語でもあります 。 C ++は多重継承と呼ばれるものをサポートしますが、Javaは単一継承のみをサポートします。

つまり、Javaでは、親クラスは多くの子クラスを持つことができますが、各子クラスは1つの親クラス(単一の継承)しか持つことができません。ただし、祖父母、親、子の関係を作成することにより、Javaで間接的な多重継承を実現する方法があります。





Javaでの親クラスの作成

ソフトウェア要件のドキュメントから親クラスを選択するプロセスは、オブジェクト指向分析として知られています。このプロセスでは、「a」というフレーズは、継承の可能性のある関係を識別するためによく使用されます。上記の例から、果物が親クラスになることがわかります。

フルーツの親クラスの例


public class Fruit {
//Variable Declaration
protected String seed;
protected String skinColor;
protected String taste;
//Default Constructor
public Fruit(){
seed = '';
skinColor ='';
taste ='';
}
//Primary Constructor
public Fruit(String seed, String skinColor, String taste){
this.seed = seed;
this.skinColor = skinColor;
this.taste = taste;
}
//getters and setters
public String getSeed() {
return seed;
}
public void setSeed(String seed) {
this.seed = seed;
}
public String getSkinColor() {
return skinColor;
}
public void setSkinColor(String skinColor) {
this.skinColor = skinColor;
}
public String getTaste() {
return taste;
}
public void setTaste(String taste) {
this.taste = taste;
}
//eat method
public void eat(){
//general code on how to eat a fruit
}
//juice method
public void juice() {
//general code on how to juice a fruit
}
}

上記の親クラスの最も注目すべき側面の1つは、各変数宣言で使用されるアクセス修飾子です。保護されたアクセス修飾子は、子以外のクラスが親クラスのデータ属性にアクセスするのを防ぐため、親クラスでの使用に最適です。

コードのさらに下では、Javaクラスの一般的な構成要素であるコンストラクター、ゲッター、およびセッターが紹介されています。最後に、プログラムの親クラスで作成された2つの方法(ジュースと食べる)を紹介します。これらはすべての果物に共通であるため、すべての果物を食べてジュースにすることができます。

Javaでの子クラスの作成

子クラスは、親から状態と動作を継承し、これらの属性をより具体的にカスタマイズすることが多いため、通常、特殊クラスまたは派生クラスと呼ばれます。

この例を続けると、オレンジが上記のフルーツクラスの適切な子クラスである理由がわかるはずです。

オレンジの子クラスの例


public class Orange extends Fruit{
//variable declaration
private int supremes;
//default constructor
public Orange() {
supremes = 0;
}
//primary constructor
public Orange(String seed, String skinColor, String taste, int supremes){
super(seed, skinColor, taste);
this.supremes = supremes;
}
//getters and setters
public int getsupremes() {
return supremes;
}
public void setsupremes(int supremes) {
this.supremes = supremes;
}
//eat method
public void eat(){
//how to eat an orange
}
//juice method
public void juice() {
//how to juice and orange
}
//peel method
public void peel(){
//how to peel an orange
}
}

通常のJavaクラス宣言がどのように見えるかと、上記のコードにあるものとの間には違いがあります。 extendsキーワードは、継承を可能にするためにJavaで使用されるものです。

上記の例では、子クラス(オレンジ)が親クラス(フルーツ)を拡張しています。したがって、fruitクラスの状態と動作は、orangeクラスからアクセスおよび変更できるようになりました。

オレンジクラスが持つ一意の属性は、変数名supremes(オレンジに見られる小さなセグメントの正式な名前)で識別されます。ここで専門化が役立ちます。すべての果物に最高のものがあるわけではありませんが、すべてのオレンジには最高のものがあるため、オレンジクラスの最高変数を予約することは論理的です。

すべての果物を皮をむくことができるわけではありませんが、オレンジはしばしば皮をむくので、既存の食事とジュースの方法に皮をむく方法を追加することも論理的です。

既存の食事とジュースの方法を変更するつもりがなかった場合は、オレンジのクラスに含める必要がないことを覚えておく必要があります。オレンジクラスのメソッドは、フルーツクラスの同様のメソッドをオーバーライドします。したがって、すべての果物が同じ方法で食べられ、ジュースにされた場合、オレンジクラスでこれらのメソッドを作成する必要はありません。

コンストラクターが継承で果たす役割

デフォルトでは、親クラスのコンストラクターは子クラスに継承されます。したがって、子クラスオブジェクトが作成されると、これは親クラスオブジェクトも自動的に作成されることを意味します。

例に戻ると、オレンジはフルーツであるため、新しいオレンジオブジェクトが作成されるたびに、フルーツオブジェクトも作成されます。

舞台裏では、子クラスオブジェクトが作成されると、最初に親クラスのコンストラクターが呼び出され、次に子クラスのコンストラクターが呼び出されます。上記のオレンジ色の子クラスでは、パラメーターなしでオレンジ色のオブジェクトが作成された場合、デフォルトのフルーツクラスコンストラクターが呼び出され、続いてデフォルトのオレンジ色のクラス請負業者が呼び出されます。

上記のプライマリコンストラクターのsuperメソッドが必要なのは、パラメーターを持つオレンジ色のオブジェクトが作成されるたびに、親フルーツクラスのデフォルトコンストラクターではなくプライマリコンストラクターを呼び出す必要があることを指定しているためです。

これで、Javaで継承を使用できます

この記事から、継承とは何か、それがどのように機能するのか、そしてなぜそれがプログラミングにおいてそれほど重要な概念であるのかを学ぶことができました。これで、Javaプログラミング言語を使用して継承関係を作成できます。さらに、祖父母の関係を作成することにより、Javaの単一継承ルールを回避する方法をマスターしました。

画像クレジット:Andreas Wohlfahrt / ペクセル

共有 共有 つぶやき Eメール 継承を使用してオブジェクト指向コードを整理する方法

オブジェクト指向プログラミングを正しく行うということは、継承と、それがコーディングを簡素化し、エラーを減らす方法について知る必要があることを意味します。

次を読む
関連トピック
  • プログラミング
  • Java
  • オブジェクト指向プログラミング
著者について カデイシャキーン(21の記事が公開されました)

Kadeisha Keanは、フルスタックソフトウェア開発者およびテクニカル/テクノロジーライターです。彼女は、最も複雑な技術的概念のいくつかを単純化する明確な能力を持っています。技術初心者なら誰でも簡単に理解できる素材を作る。彼女は、執筆、興味深いソフトウェアの開発、そして(ドキュメンタリーを通じて)世界中を旅することに情熱を注いでいます。

KadeishaKeanのその他の作品

ニュースレターを購読する

ニュースレターに参加して、技術的なヒント、レビュー、無料の電子書籍、限定セールを入手してください。

購読するにはここをクリックしてください