|
|
1 2 3 4 次のページ
|
|
はじめに
|
今回、説明する継承・インスタンスに関するコーディング規約は、コーディング規約というよりもJavaを利用する上で知っておくべき項目がほとんどです。これらの知識が不足していると、発見や追跡が困難なバグを発生させる原因となりかねません。これらの規約をしっかりと押さえ、品質のよいプログラミングを心がけてください。
|
|
継承
|
Javaでは推奨しない記述方法でもアプリケーションとしては動作してしまう場合があります。このようなことはパフォーマンスを下げる要因となるとともに、バグが発生した場合には大きな修正が発生することにもなります。
以下では継承に関する規約を紹介します。継承関係にあるクラス・メソッドの関係を把握し、正しく継承してください。
|
スーパークラスのインスタンス変数をサブクラスでオーバーライドしない(C_IHT001)
|
Javaではスーパークラス/サブクラスで同一名称のフィールドの宣言が可能です。表題には「オーバーライドしない」とありますが、同一名称のフィールド間にオーバーライドという関係はありません。
つまりこれは、スーパークラスで宣言されたフィールドとサブクラスで宣言された同名のフィールドは、各々のクラスに従属する独立したフィールドとして扱われるからです。
サブクラスでスーパークラスのフィールドと同一名称のフィールドを宣言することを「継承によるフィールドの隠蔽」と呼びます。
「継承によるフィールドの隠蔽」はJavaの言語仕様としては認められているものの、これを利用する積極的な理由はほとんどありません。「継承によるフィールドの隠蔽」はサブクラスの可読性が低下するため利用すべきではありません。さらに、サブクラスを作成する際には、スーパークラスで宣言されているフィールドを誤って隠蔽していないかを確認する必要があります。
また本規約とは直接関係はありませんが、スーパークラスで定義されているスタティックメソッドと同一のシグニチャを持つスタティックメソッドをサブクラスで定義した場合にも、オーバーライドではなく「継承によるメソッドの隠蔽」となるため、同様の配慮が必要となります。
|
1 2 3 4 次のページ
|
|
|
|
著者プロフィール
株式会社電通国際情報サービス 高安 厚思
株式会社電通国際情報サービス 開発技術センター
Java(J2EE)/オブジェクト指向の研究開発やプロジェクト支援、開発コンサルティングに従事。モデル、アーキテクチャ、プロセスが探求対象。今回は Javaコーディング規約2004の仕掛け人。
|
|
著者プロフィール
株式会社電通国際情報サービス 東田 健宏
株式会社電通国際情報サービス 開発技術センター
CTI、Webアプリの開発経験を経て、現在は主にプロジェクトマネジメント支援、プロセスエンジニアリング、ソフトウェア工学研究開発に従事。最近はコーチング、ファシリテーションといったヒューマン系スキルに興味を持ち日々修得に努めている。
|
|
著者プロフィール
株式会社電通国際情報サービス 岡 薫
株式会社電通国際情報サービス アウトソーシング事業部所属
Java(J2EE)によるフレームワーク開発やWebのセキュリティ研究開発の経験を経て、現在は、大手企業の管理会計システムの開発プロジェクトに従事。多次元データベースの検索パフォーマンスを向上することに日々頭を悩ませている。
|
|
|
|