forked from DH-Cologne/java-wegweiser
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Static-Members.md
122 lines (78 loc) · 3 KB
/
Static-Members.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# Static Members
> :construction: **TODO:**
> - gründlichere Formulierungen in ganzen Sätzen
> - weitere Inhalte aus der Übersicht in der README!
- [Static Members](#static-members)
- [`static`](#static)
- [Klassenvariablen](#klassenvariablen)
- [Statische Methoden](#statische-methoden)
## `static`
`static` bedeutet _"an die Klasse gebunden"_ im Gegensatz zu _"an das Objekt gebunden"_. Dies hat je nach Kontext, in dem das Schlüsselwort `static` verwendet wird, unterschiedliche Auswirkungen ...
## Klassenvariablen
> :speech_balloon: Engl.: _static member variables_
- auch _Klassenvariablen_ genannt
- sind **ohne** Instanz der Klasse zugreifbar (sofern sie sichtbar sind!)
- haben klassenweit - also in jeder Instanz der Klasse - immer den selben Wert
> :construction: **TODO:** ausarbeiten...
**Beispiel für _Klassenvariablen_:**
```java
public class User {
private static String displayString;
public User(){
// default displayString setzen
this.displayString = "User";
}
public void setDisplayString(String displayString){
this.displayString = displayString;
}
public String getDisplayString(){
return this.displayString;
}
}
public class Application {
public static void main(String[] args){
User userOne = new User();
User userTwo = new User();
// displayString für userOne ändern
userOne.setDisplayString("Benutzer");
// gibt "Benutzer" aus (erwartbar)
System.out.println(userOne.getDisplayString());
// gibt ebenfalls "Benutzer" aus, weil das Feld statisch ist!
System.out.println(userTwo.getDisplayString());
}
}
```
## Statische Methoden
> :speech_balloon: Engl.: _static methods_
- sind **ohne** Instanz der Klasse zugreifbar (sofern sie sichtbar sind!).
- In _statischen Methoden_ kann **nicht** auf nicht-statische Variablen und Methoden zugegriffen werden, da diese (anders als die statische Methode) an Instanzen der Klasse gebunden sind (die im statischen Kontext nunmal nicht existieren).
> :construction: **TODO:** ausarbeiten...
**Beispiel für _statische Methoden_:**
```java
public class User {
private String id;
private String eMail;
public User(String eMail){
this.eMail = eMail;
this.id = User.generateUserID(eMail);
}
public static String generateUserID(String userMailAddress){
return "User" + Math.abs(userMailAddress.hashCode());
}
}
public class Application {
public static void main(String[] args){
String someMailAddress = "[email protected]";
// Welche ID hat ein User mit dieser Adresse?
// Wenn es sie/ihn gibt, dann diese ID (statische Methode
// wird ohne User-Objekt aufgerufen!):
System.out.println(User.generateUserID(someMailAddress));
}
}
```
<!-- Dieses HTML-Snippet sollte am Ende jeder Seite stehen! -->
<div class="top-link">
<a href="#" title="Zum Anfang scrollen!">Top :balloon:</a>
<br/>
<a href="https://dh-cologne.github.io/java-wegweiser#inhalt-book" title="Zurück zur Übersicht!">Inhalt :book:</a>
</div>