Java-Version: public, protected, default, private

Beim Definieren einer Klasse und ihrer Mitglieder können Sie verschiedene Zugriffsmodifikatoren verwenden, um die Sichtbarkeit von Klassenmitgliedern zu steuern und so deren Umfang einzuschränken. Im Folgenden finden Sie eine detaillierte Erläuterung der Rolle jedes Zugriffsmodifikators:

  1. publicZugriffsmodifikatoren:

    • publicAuf Mitglieder kann von jeder anderen Klasse zugegriffen werden, unabhängig davon, ob sie sich im selben Paket befinden oder nicht.
    • Innerhalb verschiedener Pakete können Sie Objekte der Klasse verwenden, um auf publicMitglieder zuzugreifen.
    • publicMitglieder haben den größten Umfang und können während des gesamten Programms abgerufen werden.
    • Beispiel:
    public class MyClass {
          
          
        public int publicField;
    
        public void publicMethod() {
          
          
            // 在这里编写代码
        }
    }
    
  2. protectedZugriffsmodifikatoren:

    • protectedAuf Mitglieder kann nur innerhalb von Klassen innerhalb desselben Pakets und Unterklassen dieser Klasse zugegriffen werden.
    • Innerhalb verschiedener Pakete können nur Unterklassen dieser Klasse protecteddurch Vererbung auf Mitglieder zugreifen.
    • protectedDer Bereich eines Mitglieds liegt zwischen publicund dem Standardzugriffsmodifikator.
    • Beispiel:
    public class MyClass {
          
          
        protected int protectedField;
    
        protected void protectedMethod() {
          
          
            // 在这里编写代码
        }
    }
    
  3. Standardzugriffsmodifikator ( default):

    • Wenn kein Zugriffsmodifikator verwendet wird, verwendet das Mitglied standardmäßig default, was auch als Zugriff auf Paketebene bezeichnet wird.
    • defaultAuf Mitglieder kann nur von anderen Klassen innerhalb desselben Pakets aus zugegriffen werden.
    • defaultMitglieder sind in verschiedenen Paketen nicht sichtbar, d. h. Klassen in anderen Paketen können nicht direkt auf sie zugreifen.
    • Beispiel:
    class MyClass {
          
          
        int defaultField;
    
        void defaultMethod() {
          
          
            // 在这里编写代码
        }
    }
    
  4. privateZugriffsmodifikatoren:

    • privateAuf Mitglieder kann nur innerhalb derselben Klasse zugegriffen werden und andere Klassen können nicht direkt darauf zugreifen.
    • privateModifikatoren bieten die höchste Kapselungsebene und stellen sicher, dass Mitglieder verborgen sind und nur indirekt über öffentliche Methoden der Klasse darauf zugegriffen werden kann.
    • privateMitglieder haben den kleinsten Umfang und sind auf die Klasse beschränkt.
    • Beispiel:
    public class MyClass {
          
          
        private int privateField;
    
        private void privateMethod() {
          
          
            // 在这里编写代码
        }
    }
    

Wählen Sie entsprechend den Anforderungen und Entwurfsprinzipien des Programms geeignete Zugriffsmodifikatoren aus, um den Umfang der Klassenmitglieder einzuschränken und die Sicherheit und Wartbarkeit des Programms zu gewährleisten. Das Befolgen der Best Practices für Zugriffsmodifikatoren kann die Sichtbarkeit von Klassenmitgliedern effektiv steuern und die Kopplung des Codes reduzieren, wodurch der Code robuster und einfacher zu warten ist.

Zugriffsmodifikator Innerhalb derselben Klasse Kurse im selben Paket Unterklassen in verschiedenen Paketen Nicht-Unterklassen in verschiedenen Paketen
öffentlich sichtbar sichtbar sichtbar sichtbar
geschützt sichtbar sichtbar sichtbar Unsichtbar
Standard sichtbar sichtbar Unsichtbar Unsichtbar
Privat sichtbar Unsichtbar Unsichtbar Unsichtbar

In der Tabelle ist für jeden Zugriffsmodifikator die Sichtbarkeit des Mitglieds unter diesem Modifikator markiert:

  • „Sichtbar“ bedeutet, dass auf das Mitglied zugegriffen werden kann.
  • „Unsichtbar“ bedeutet, dass das Mitglied in der aktuellen Situation nicht erreichbar ist.

Es ist zu beachten, dass protectedUnterklassen bei Zugriffsmodifikatoren zwar auf protectedMitglieder in ihrer übergeordneten Klasse zugreifen können, für Nicht-Unterklassen in anderen Paketen jedoch immer noch unsichtbar sind. Zugriffsmodifikatoren defaultsind zwar in Klassen im selben Paket zugänglich, in Klassen in verschiedenen Paketen jedoch immer noch unsichtbar. Auf Zugriffsmodifikatoren privatekann unter keinen Umständen nur innerhalb der Klasse zugegriffen werden.

Die unterschiedlichen Bereiche und die Sichtbarkeit dieser Zugriffsmodifikatoren helfen dabei, den Zugriff auf Klassenmitglieder zu steuern, wodurch Daten gekapselt und ausgeblendet werden und die Sicherheit und Wartbarkeit des Programms gewährleistet wird.

Konkrete Beispiele

// 文件名:Student.java

public class Student {
    
    
    public String name;      // 公开访问
    protected int age;       // 受保护访问
    int score;              // 默认访问修饰符
    private String address;  // 私有访问

    // 构造方法
    public Student(String name, int age, int score, String address) {
    
    
        this.name = name;
        this.age = age;
        this.score = score;
        this.address = address;
    }

    // 公开方法
    public void printInfo() {
    
    
        System.out.println("姓名:" + name);
        System.out.println("年龄:" + age);
        System.out.println("成绩:" + score);
        // 注意:私有成员在类的内部可以直接访问
        System.out.println("地址:" + address);
    }

    // 受保护方法
    protected void showAge() {
    
    
        System.out.println("年龄:" + age);
    }

    // 默认访问修饰符方法
    void showScore() {
    
    
        System.out.println("成绩:" + score);
    }

    // 私有方法
    private void showAddress() {
    
    
        System.out.println("地址:" + address);
    }
}
// 文件名:Main.java

public class Main {
    
    
    public static void main(String[] args) {
    
    
        Student student = new Student("Alice", 20, 85, "Beijing");
        
        // 公开成员和方法可以在任何地方访问
        student.name = "Bob";
        student.printInfo();

        // 受保护成员和方法只能在同一个包或子类中访问
        student.age = 21;
        student.showAge();

        // 默认访问修饰符的成员和方法只能在同一个包中访问
        student.score = 90;
        student.showScore();

        // 私有成员和方法只能在同一个类中访问
        // student.address = "Shanghai";  // 编译错误
        // student.showAddress();        // 编译错误
    }
}

Im obigen Beispiel haben wir eine StudentKlasse namens definiert und verschiedene Zugriffsmodifikatoren verwendet, um die Sichtbarkeit der Mitglieder zu steuern. In Mainder Klasse können wir die Auswirkungen verschiedener Zugriffsmodifikatoren auf den zugänglichen Bereich von Mitgliedern und Methoden sehen. Beachten Sie, dass sich Maindie Klasse und die StudentKlasse im selben Paket befinden und daher Zugriff auf Mitglieder und Methoden sowohl mit Standard- als auch mit geschützten Zugriffsmodifikatoren haben. Auf Mitglieder und Methoden mit privaten Zugriffsmodifikatoren kann nur innerhalb der Klasse zugegriffen werden und andere Klassen können nicht direkt darauf zugreifen.

Acho que você gosta

Origin blog.csdn.net/qq_40140808/article/details/131948415
Recomendado
Clasificación