Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
programmierung:klassen:public_private [2024/07/03 14:50] – created sweprogrammierung:klassen:public_private [2025/12/20 14:53] (current) – external edit 127.0.0.1
Line 1: Line 1:
-====== public und private ======+public und private
  
-Jedes Attribut einer Klasse und jede Methode kann eine der Eigenschaften ''public'' oder +Jedes Attribut einer Klasse und jede Methode kann eine der Eigenschaften 
-''private'' erhalten. Hat sie keine davon, gilt sie standardmäßig als ''public''.+`publicoder `privateerhalten. Hat sie keine davon, gilt sie 
 +standardmäßig als `public`.
  
-===== Benutzung von Attributen außerhalb der Klasse ===== +## Benutzung von Attributen außerhalb der Klasse
-''public'': ja+
  
-''private''nein+`public`ja
  
-Das bedeutet, dass Attribute, die ''public'' sind, im konkreten Programmablauf bsp. in einer ''main''-Methode, ausgelesen und geschreiben werden können - mit allen Konsequenzen, die dahinter stecken.  +`private`: nein
-So könnten Werte eingetragen werden, die ich als Programmierer gar nicht zulassen möchte, bsp. einen positives Dispo-Wert in einer Klasse ''Konto''.+
  
-<WRAP group> +Das bedeutet, dass Attribute, die `public` sind, im konkreten 
-<WRAP half column> +Programmablauf bsp. in einer `main`-Methode, ausgelesen und geschreiben 
-<code java [enable_line_numbers="true", highlight_lines_extra="5"]>+werden können - mit allen Konsequenzen, die dahinter stecken. So könnten 
 +Werte eingetragen werden, die ich als Programmierer gar nicht zulassen 
 +möchte, bsp. einen positives Dispo-Wert in einer Klasse `Konto`. 
 + 
 +\<WRAP group\\<WRAP half column\
 + 
 +``` java
 public class Konto { public class Konto {
          
Line 24: Line 29:
          
 } }
-</code> +```
-</WRAP>+
  
-<WRAP half column> +\</WRAP\> 
-<code java [enable_line_numbers="true", highlight_lines_extra="6"]>+ 
 +\<WRAP half column\
 + 
 +``` java
 public class Main { public class Main {
     public static void main(String[] args) {     public static void main(String[] args) {
Line 38: Line 45:
     }     }
 } }
-</code> +```
-</WRAP> +
-</WRAP>+
  
-Hier wird in der ''Main''-Klasse ein Wert für ''Dispo'' eingetragen, der nicht zulässig ist. Wie kann man solch unerwünschtes Zugreifen auf Attribute verhindern?+\</WRAP\> \</WRAP\>
  
-===== Attribut privat setzen =====+Hier wird in der `Main`-Klasse ein Wert für `Dispo` eingetragen, der 
 +nicht zulässig ist. Wie kann man solch unerwünschtes Zugreifen auf 
 +Attribute verhindern?
  
 +## Attribut privat setzen
  
-Wenn ich selbst bestimmen möchte, wie auf bestimmte Attribute zugegriffen wird, muss ich das Attribut nach außen schützen, indem ich es auf ''private'' setze. Damit geht jeder Zugriff nach außen verloren. Probiere das Beispiel aus, indem das Attribut ''dispo'' das Schlüsselwort ''private'' vorangestellt wird. Du wirst sehen, dass es in der ''Main'' eine Fehlermeldung gibt. Schon ein Text-Editor mit Java-Extension wird sich über nicht Nicht-Sichtbarkeit beschweren.+Wenn ich selbst bestimmen möchte, wie auf bestimmte Attribute 
 +zugegriffen wird, muss ich das Attribut nach außen schützen, indem ich 
 +es auf `privatesetze. Damit geht jeder Zugriff nach außen verloren. 
 +Probiere das Beispiel aus, indem das Attribut `dispodas Schlüsselwort 
 +`privatevorangestellt wird. Du wirst sehen, dass es in der `Maineine 
 +Fehlermeldung gibt. Schon ein Text-Editor mit Java-Extension wird sich 
 +über nicht Nicht-Sichtbarkeit beschweren.
  
-<WRAP group> +\<WRAP group\\<WRAP half column\
-<WRAP half column> + 
-<code java [enable_line_numbers="true", highlight_lines_extra="5"]>+``` java
 public class Konto { public class Konto {
          
Line 61: Line 75:
          
 } }
-</code> +```
-</WRAP>+
  
-<WRAP half column> +\</WRAP\> 
-<code java [enable_line_numbers="true", highlight_lines_extra="6"]>+ 
 +\<WRAP half column\
 + 
 +``` java
 public class Main { public class Main {
     public static void main(String[] args) {     public static void main(String[] args) {
Line 75: Line 91:
     }     }
 } }
-</code> +```
-</WRAP> +
-</WRAP>+
  
-===== Getter und Setter =====+\</WRAP\> \</WRAP\>
  
-Nun wäre es ein ziemlich sinnloses Programm, wenn ich bestimmte Attribute im Programmablauf nicht verändern könnte. Als Programmierer möchte ich ja, dass Attribute ja nach Objekt unterschiedlich sein können. Ich möchte das aber eben nach **meinen eigenen Bedingungen**!+## Getter und Setter public setzen
  
-Hier kommt das Konzept der sogenannten **Getter** und **Setter**-Methoden zum Tragen.+Nun wäre es ein ziemlich sinnloses Programm, wenn ich bestimmte 
 +Attribute im Programmablauf nicht verändern könnte. Als Programmierer 
 +möchte ich ja, dass Attribute ja nach Objekt unterschiedlich sein 
 +können. Ich möchte das aber eben nach **meinen eigenen Bedingungen**!
  
-Statt dass ich das Attribut ''public'' mache, biete ich eine **Methode** öffentlich (public) an, die das Setzen (Set) oder Auslesen (Get) von Attributen übernimmt.+Hier kommt das Konzept der sogenannten **Getter** und 
 +**Setter**-Methoden zum Tragen. 
 + 
 +Statt dass ich das Attribut `publicmache, biete ich eine **Methode** 
 +öffentlich (public) an, die das Setzen (Set) oder Auslesen (Get) von 
 +Attributen übernimmt.
  
 Was ist nun der große Unterschied zum direkten Bearbeiten? Was ist nun der große Unterschied zum direkten Bearbeiten?
  
-Ich kann in den **Getter** und **Setter**-Methoden meinen eigenen Bedingungen implementieren! So kann ich für das Beispiel des Kontos festlegen, dass ein Attribut ''dispo'' niemals positiv sein darf. Ich als Programmierer erlange somit Kontrolle über mögliche Werte von Attributen!+Ich kann in den **Getter** und **Setter**-Methoden meinen eigenen 
 +Bedingungen implementieren! So kann ich für das Beispiel des Kontos 
 +festlegen, dass ein Attribut `disponiemals positiv sein darf. Ich als 
 +Programmierer erlange somit Kontrolle über mögliche Werte von 
 +Attributen!
  
-<WRAP group> +\<WRAP group\\<WRAP half column\
-<WRAP half column> + 
-<code java [enable_line_numbers="true", highlight_lines_extra="7,8,9,10,11,12,13,14"]>+``` java
 public class Konto { public class Konto {
          
Line 112: Line 138:
          
 } }
-</code> +```
-</WRAP>+
  
-<WRAP half column> +\</WRAP\> 
-<code java [enable_line_numbers="true", highlight_lines_extra="7"]>+ 
 +\<WRAP half column\
 + 
 +``` java
 public class Main { public class Main {
     public static void main(String[] args) {     public static void main(String[] args) {
Line 127: Line 155:
     }     }
 } }
-</code> +``` 
-</WRAP> + 
-</WRAP>+\</WRAP\\</WRAP\>