JavaA2Z

KAB-studio > プログラミング > JavaA2Z > 委譲とは

委譲

日本語 委譲
英語 delegation
ふりがな いじょう
フリガナ イジョウ

解説

あるクラス実装を、継承を使わずに他のクラスに任せること。
特定のクラスの機能を、自分が作るクラスにも持たせたい場合に、継承を使わずフィールドとしてそのクラスを持ち、そのクラスメソッド呼び出すメソッドを持たせること。つまり、自分が持つべき機能を他のクラスに「委譲」する。
 
オブジェクト指向用語。
厳密なオブジェクト指向では、継承は「機能の継承」を目的とせず、「スーパークラスサブクラスの一種である」といういわゆる「is-a」の関係を持たなければならない。
そのため、単に機能を持たせたい場合には、継承ではなく委譲とすることが推奨される。
 
委譲の実現には多くの場合コンポジションを使用する。
この2つは似ているが、委譲は「目的」であり、コンポジションはその「手段」である。

参考サイト

  • (参考サイトはありません)

(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // 文字列クラスを使ってみます。
        Strings strings = new Strings();
        strings.append( "あいうえお\n" );
        strings.append( "かきくけこ\n" );
        strings.append( "さしすせそ\n" );

        System.out.println( strings.toString() );
        // あいうえお
        // かきくけこ
        // さしすせそ
    }
}

/**
*   文字列クラス。
*/
class Strings
{
    /**
    *   コンポジションを使って、文字列の格納を
    *   StringBufferクラスに委譲します。
    */
    private StringBuffer strbuf = new StringBuffer();

    /**
    *   文字列を追加します。
    */
    public Strings append( String string )
    {
        strbuf.append( string );
        return this;
    }

    /**
    *   文字列を取得します。
    */
    public String toString()
    {
        return strbuf.toString();
    }
}
// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // 文字列クラスを使ってみます。
        Strings strings = new Strings();
        strings.append( "あいうえお\n" );
        strings.append( "かきくけこ\n" );
        strings.append( "さしすせそ\n" );

        System.out.println( strings.toString() );
        // あいうえお
        // かきくけこ
        // さしすせそ
    }
}

/**
*   文字列クラス。
*/
class Strings
{
    /**
    *   コンポジションを使って、文字列の格納を
    *   StringBufferクラスに委譲します。
    */
    private StringBuffer strbuf = new StringBuffer();

    /**
    *   文字列を追加します。
    */
    public Strings append( String string )
    {
        strbuf.append( string );
        return this;
    }

    /**
    *   文字列を取得します。
    */
    public String toString()
    {
        return strbuf.toString();
    }
}

この単語を含むページ

「みだし」に含まれているページ

「解説」に含まれているページ

「サンプルプログラムとか」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/05/31
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。