Javaの保護されたキーワードの詳細な例

王林
リリース: 2020-06-02 16:52:40
転載
2798 人が閲覧しました

Javaの保護されたキーワードの詳細な例

まず、次の 2 つの例を見てみましょう:

例 1:

//包A中有一个动物类  
package testa;  
public class Animal {  
    protected void crowl(String c){  
        System.out.println(c);  
    }  
}
ログイン後にコピー

(ビデオ チュートリアルの推奨事項: java ビデオ)

例 2:

package testb;
import testa.Animal;
 
class Cat extends Animal 
{  
    
}  
public class Rat extends Animal{  
    public void crowl(){  
              this.crowl("zhi zhi"); //没有问题,继承了Animal中的protected方法——crowl(String)  
              Animal ani=new Animal();
              ani.crowl("animail jiaojiao"); //wrong, The method crowl(String) from the type Animal is not visible 
              Cat cat=new Cat();  
              cat.crowl("miao miao"); //wrong, The method crowl(String) from the type Animal is not visible  
    }  
}
ログイン後にコピー

猫とマウスは両方とも動物クラスを継承するため、マウス クラスのスコープ内では、次の継承が行われます。猫は見えません crow() メソッドはどうでしょうか?

質問の回答:

protected アクセス保護ルールは非常に微妙です。ただし、保護されたドメインはすべてのサブクラスに表示されます。しかし、非常に重要なことが 1 つあります。 が異なるパッケージ内にある場合、 サブクラスは、独自のスコープ内で継承する親クラスの保護されたドメインにのみアクセスできますが、他のサブクラスにはアクセスできません (同じものを持つ)親) クラスの実の兄弟によって継承された保護ドメイン) と親クラス オブジェクトの保護ドメイン ani.crow1()。 率直に言うと、ネズミは「ジー、ジー」としか鳴きません。たとえ猫が見えたとしても(自分のスコープ内に猫オブジェクトを作成できる)、彼は決して鳴くことを学ぶことはありません。

つまり、cat によって継承された crowl メソッドは、cat クラスのスコープ内で参照できます。しかし、たとえネズミと猫が兄弟であっても、ネズミクラスの範囲内ではそれは見えません。

さらに: clone メソッドを使用する場合、オブジェクト aObject.clone() を単純に直接複製できないのはこのためです。 aObject.bObject=(Bobject)this.bObject.clone();

概要:

B が A を拡張する場合、サブクラス B のスコープ内で、保護されたクラスのみを呼び出します。このサブクラス B で定義されたオブジェクトのメソッド (このメソッドは親クラス A から継承されます)。クラス A の他のオブジェクト (A 自体および A から継承されたオブジェクト) の保護されたメソッドを呼び出すことはできません。

推奨チュートリアル: java エントリー プログラム

以上がJavaの保護されたキーワードの詳細な例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート