JavaA2Z

KAB-studio > プログラミング > JavaA2Z > superフィールドとは

superフィールド

日本語 親領域
英語 super field
ふりがな すーぱーふぃーるど
フリガナ スーパーフィールド

解説

メソッド内で、そのメソッド呼び出しインスタンススーパークラスを示す参照変数
superフィールドとしての使用方法
 
メソッド内でスーパークラスメソッドを呼ぶ際に使用する。
特に、オーバーライドしたメソッドから、オーバーライドされたメソッド呼び出す際に使用される。「super.オーバーライドした(された)メソッド();」という書式で、オーバーライドされたメソッド呼び出すことができる。
この機能により、メソッドオーバーライドで「メソッドの前処理・後処理の追加」をうことができる。オーバーライドしたメソッドで何か処理をした後、オーバーライドメソッド呼び出し、その後再びオーバーライドしたメソッドで何か処理をすることで、「オーバーライドメソッドの機能はそのままに、その前後に処理を加える」ということができる。
ただし、継承関係で親、子、孫、ひ孫と存在し、それぞれで親のメソッドオーバーライドしていた場合、ひ孫からは孫のメソッドしか呼べない。継承関係の任意のメソッドを呼べるわけではないので注意。

基本的な使用方法はthisと同じであり、参照変数として使用できることには代わりはない。
Javaでは、継承関係を含めてひとつのインスタンスのため、thissuperも同じ「自分自身」の参照値を持っている事に注意。

参考サイト

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

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

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

// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // SubClassクラスを作ります。
        SubClass subClass = new SubClass();
        subClass.override();
        // SubClass#override()
        // SuperClass#override()
        // SubClass@3bb2b8
        // SubClass@3bb2b8
    }
}

/**
*   スーパークラス。
*/
class SuperClass
{
    /**
    *   オーバーライド用メソッド。
    */
    protected void override()
    {
        System.out.println( "SuperClass#override()" );
    }
}

/**
*   サブクラス。
*/
class SubClass extends SuperClass
{
    /**
    *   オーバーライドするメソッド。
    */
    public void override()
    {
        System.out.println( "SubClass#override()" );
        // スーパークラスのメソッドSubClass#override()メソッドを呼び出します。
        super.override();

        // superは参照値としてはthisと同じです。
        System.out.println( this.toString() );
        System.out.println( super.toString() );
    }
}
// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // SubClassクラスを作ります。
        SubClass subClass = new SubClass();
        subClass.override();
        // SubClass#override()
        // SuperClass#override()
        // SubClass@3bb2b8
        // SubClass@3bb2b8
    }
}

/**
*   スーパークラス。
*/
class SuperClass
{
    /**
    *   オーバーライド用メソッド。
    */
    protected void override()
    {
        System.out.println( "SuperClass#override()" );
    }
}

/**
*   サブクラス。
*/
class SubClass extends SuperClass
{
    /**
    *   オーバーライドするメソッド。
    */
    public void override()
    {
        System.out.println( "SubClass#override()" );
        // スーパークラスのメソッドSubClass#override()メソッドを呼び出します。
        super.override();

        // superは参照値としてはthisと同じです。
        System.out.println( this.toString() );
        System.out.println( super.toString() );
    }
}

この単語を含むページ

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

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

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

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