JavaA2Z

KAB-studio > プログラミング > JavaA2Z > protectedクラスとは

protectedクラス

日本語 保護クラス
英語 protected class
ふりがな ぷろてくてっどくらす
フリガナ プロテクテッドクラス

解説

protectedで修飾されたクラス
protected class クラス{ クラス定義 }」のように、クラス宣言の先頭にprotectedが付けられたクラス
内部クラスとして宣言する際に付ける事で、外部クラスサブクラス及び同パッケージの他クラスからのみ使用することができる。
……が、仕様が複雑なうえ、いまいち使い道が判らないため、ほとんど使用することはないだろう。

参考サイト

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

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

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

// Sample.java
// testパッケージのOtherPackageClassクラスを使用します。
import test.OtherPackageClass;

public class Sample
{
    public static void main( String[] args )
    {
        // protectedクラスを使用してみます。
        NormalClass normalClass = new NormalClass();
        NormalClass.ProtectedClass protectedClass = normalClass.new ProtectedClass();
        protectedClass.output();
        // ProtectedClass#output()
        // このように、外から使うことができます。
    }

    /**
    *   OtherPackageClassを使います。
    */
    void useOtherPackageClass()
    {
        // protectedクラスを使用してみます。
        // OtherPackageClass.ProtectedClass protectedClass2;
        // コンパイルエラー:
        // 型 OtherPackageClass.ProtectedClass は不可視です。
        // このように、他のパッケージにあるクラスの中の
        // protectedクラスは使用できません。
    }
}

/**
*   フツーのクラス。
*/
class NormalClass
{
    /**
    *   protectedクラス。
    */
    protected class ProtectedClass
    {
        /**
        *    protectedフィールド。
        */
        public void output()
        {
            System.out.println( "ProtectedClass#output()" );
        }
    }
}


/**
*   グローバルなprotectedクラスは作れません。
*/
// protected class ProtectedClassOnGlobal{}
// コンパイルエラー:
// クラス ProtectedClassOnGlobal の無許可の修飾子 ; public、abstract、および final のみ許可されています。

/**
*   OtherPackageClassのサブクラス。
*/
class ExtendedOtherPackageClass extends OtherPackageClass
{
    /**
    *   出力用メソッド。
    */
    public void output()
    {
        ExtendedProtectedClass extendedProtectedClass = new ExtendedProtectedClass();
        extendedProtectedClass.output();
        // このように、サブクラス内でサブクラスを作れば
        // 使うことができます。

        // 直接は使えません。
        // ProtectedClass protectedClass = new ProtectedClass();
        // コンパイルエラー:
        // コンストラクター OtherPackageClass.ProtectedClass() は不可視です。
    }

    /**
    *   protectedクラスのサブクラス。
    */
    class ExtendedProtectedClass extends ProtectedClass
    {
    }
}


// test/OtherPackageClass.java
package test;

/**
*   別パッケージのフツーのクラス。
*/
public class OtherPackageClass
{
    /**
    *   protectedクラス。
    */
    protected class ProtectedClass
    {
        /**
        *    protectedフィールド。
        */
        public void output()
        {
            System.out.println( "ProtectedClass#output()" );
        }
    }
}
// Sample.java
// testパッケージのOtherPackageClassクラスを使用します。
import test.OtherPackageClass;

public class Sample
{
    public static void main( String[] args )
    {
        // protectedクラスを使用してみます。
        NormalClass normalClass = new NormalClass();
        NormalClass.ProtectedClass protectedClass = normalClass.new ProtectedClass();
        protectedClass.output();
        // ProtectedClass#output()
        // このように、外から使うことができます。
    }

    /**
    *   OtherPackageClassを使います。
    */
    void useOtherPackageClass()
    {
        // protectedクラスを使用してみます。
        // OtherPackageClass.ProtectedClass protectedClass2;
        // コンパイルエラー:
        // 型 OtherPackageClass.ProtectedClass は不可視です。
        // このように、他のパッケージにあるクラスの中の
        // protectedクラスは使用できません。
    }
}

/**
*   フツーのクラス。
*/
class NormalClass
{
    /**
    *   protectedクラス。
    */
    protected class ProtectedClass
    {
        /**
        *    protectedフィールド。
        */
        public void output()
        {
            System.out.println( "ProtectedClass#output()" );
        }
    }
}


/**
*   グローバルなprotectedクラスは作れません。
*/
// protected class ProtectedClassOnGlobal{}
// コンパイルエラー:
// クラス ProtectedClassOnGlobal の無許可の修飾子 ; public、abstract、および final のみ許可されています。

/**
*   OtherPackageClassのサブクラス。
*/
class ExtendedOtherPackageClass extends OtherPackageClass
{
    /**
    *   出力用メソッド。
    */
    public void output()
    {
        ExtendedProtectedClass extendedProtectedClass = new ExtendedProtectedClass();
        extendedProtectedClass.output();
        // このように、サブクラス内でサブクラスを作れば
        // 使うことができます。

        // 直接は使えません。
        // ProtectedClass protectedClass = new ProtectedClass();
        // コンパイルエラー:
        // コンストラクター OtherPackageClass.ProtectedClass() は不可視です。
    }

    /**
    *   protectedクラスのサブクラス。
    */
    class ExtendedProtectedClass extends ProtectedClass
    {
    }
}


// test/OtherPackageClass.java
package test;

/**
*   別パッケージのフツーのクラス。
*/
public class OtherPackageClass
{
    /**
    *   protectedクラス。
    */
    protected class ProtectedClass
    {
        /**
        *    protectedフィールド。
        */
        public void output()
        {
            System.out.println( "ProtectedClass#output()" );
        }
    }
}

この単語を含むページ

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

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

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