Javaがサブクラスアクセスを制限する方法の分析

2859 ワード

この例では、Javaがサブクラスへのアクセスを制限する方法について説明します.皆さんの参考にしてください.具体的には以下の通りです.
ほんの少し
親は、自分の「プライバシー」を守りたい場合があります.自分のメンバーがクラスに継承されても、子クラスが自分のクラスのすべての属性やメソッドにアクセスできることを望んでいません.この場合、いくつかの属性とメソッドを隠して、子クラスに使用させない必要があります.プロパティまたはメソッドを宣言するときにprivateキーを付けると、プライベート・アクセス権を表します.つまり、プロパティまたはメソッドが存在するクラスを宣言する以外に、サブクラスを含む他の外部クラスにアクセスできません.
二実戦――サブクラスへのアクセス制限
1コード

class Person
{
   //         
   private String name;
   private int age;
}
class Student extends Person
{
   //               
   public void setVar()
   {
      super.name="  ";
      super.age=25;
      name = "  ";
      age = 25;
   }
}
public class RestrictVisit
{
   public static void main( String[] args )
   {
      new Student().setVar();
   }
}


2運転
Exception in thread "main"java.lang.Error: Unresolved  compilation problems:      The field Person.name is not visible      The field Person.age is not visible      The field Person.name is not visible      The field Person.age is not visible      at Student.setVar(RestrictVisit.java:23)      at RestrictVisit.main(RestrictVisit.java:34)
三実戦――子が親を訪問するプライベートメンバー
1コード

class Person{
  //         
  private String name;
  private int age;
  Person(String name, int age)
  {
    this.name = name;
    this.age = age;
  }
  //               
  void setVar(String name, int age)
  {
    this.name = name;
    this.age = age;
  }
  
  void print()
  {
    System.out.println("I am : " + name + ", I am : " + age + " years old");
  }
}
class Student extends Person
{
  Student(String name, int age)
  {
    super(name, age);
  }
  /*  
  void Test () //                 
  {
    System.out.println("I am : " + name + ", I am : " + age + " years old");
  }
  */
  
  /*
  void print()
  {
    System.out.println("I am : " + name + ", I am : " + age + " years old");
  }
  */
  
}
public class RestrictVisit2
{
  public static void main( String[] args )
  {
    Student s = new Student("Jack",30);
    s.print();
    s.setVar("Tom", 25);
    s.print();
    // s.Test();
  }
}


2運転
I am : Jack, I am : 30 years old I am : Tom, I am : 25 years old
Javaに関する詳細に興味のある読者は、「Javaオブジェクト向けプログラム設計入門と進級チュートリアル」、「Javaデータ構造とアルゴリズムチュートリアル」、「Java操作DOMノードテクニックまとめ」、「Javaファイルとディレクトリ操作テクニックまとめ」、「Javaキャッシュ操作テクニックまとめ」のトピックを参照してください.
本文で述べたjavaプログラム設計に役立つことを願っています.