-1

重複の可能性:
プライベートフィールドはサブクラスに継承されていますか?

サブクラスがプライベートフィールドに直接アクセスできないことは間違いありません。しかし、プライベートフィールドが存在する場合はどうなりますか?実際、私はパブリックメソッドまたは保護されたメソッドでプライベートフィールドにアクセスできます。

プライベートメソッドも。

誰かがこれが何をしているのか教えてもらえますか?

4

4 に答える 4

1

常にクラスのフィールドを作成する必要がありますprivate。そしてpublic、それらのフィールドにアクセスするためのアクセサメソッドを提供します。

これを行うことにより、あなたはそれのレベルを達成していencapsulationますOO language

また、直接アクセスを許可しないことのその他の利点は、外部クラスにアクセスを許可する前に、必要性とセキュリティに応じてフィールドを変更できることです。

実際、同じクラスでも通すことをお勧めaccess the private fieldsます。getter methods

これは、クラスの変更も簡単に役立ちます。

将来、フィールドへのアクセス方法を変更したいとします(つまり、フィールドを返す前に、フィールドに対して何らかの処理を行います)。ここで、自分のクラスでも直接フィールドにアクセスしている場合。あらゆる場所に行って変更する必要があります。しかしgetter、フィールドにアクセスするために使用した場合は、メソッドを変更するだけで済みmodifyます。getter

public class A {  
    private int data;

    public int getData() {
        // Here apart from just return the `data`, you can perform some 
        // modification also according to your need..
    }
}
于 2012-10-09T13:38:02.387 に答える
0

これは正常な動作です。スーパークラスは抽象化を提供するので、対処する必要があります。実装の詳細に煩わされる必要はありません。明日実装が変更された場合、サブクラスを変更する必要はありません。スーパークラスがそれを隠します。

于 2012-10-09T13:33:07.970 に答える
0

あなたが見ているのはカプセル化です。メソッドを介してクラスのメンバーへのアクセスを制御しており、直接アクセスできないようにしています。

于 2012-10-09T13:34:49.983 に答える
0

この場合、 publicprotected、およびprivateという用語の意味を読みたいと思うかもしれません。

それらのフィールドがprivateである場合、サブクラスはその親からフィールドおよびメソッドにアクセスできません。サブクラスがそれらのフィールドおよびメソッドにアクセスできるようにする場合、(親クラスで) 使用する必要がある可視性修飾子はprotectedです。

protectedの使用は、具体的にはサブクラスであり、サブクラスのみが親クラスのフィールドとメソッドにアクセスできます。

于 2012-10-09T13:35:34.623 に答える