Zugriff auf Methodenergebnisse?

Ok - hier mal um das mit der Nomenklatur zusammenzubringen -

static = Klassenvariable
non-static = Member bzw. Instanzvariable

Wenn ich das vorhin durcheinandergeworfen habe, tut es mir leid. Sprich - die statischen Membervariablen sind natürlich Quatsch. Es muss Klassenvariablen wie in ST heissen (die übrigens auch nie public sein können in ST, auf Variablen kann man nur mittels Methoden zugreifen - ausnahme Pool und Global)
 
ich habe nach Variablen gefragt, die ich von überall her ändern kann und lesen kann. Das sind in Java nur öffentliche statische Variablen - nur statisch kann man nicht von überall her lesen/schreiben, daher sind sich sicher nicht global.
Auch öffentliche statische Variablen sind nicht direkt global. Um auf eine solche Variable lesend und schreibend zugreifen zu können, muss man erst einmal Zugang zur Klasse haben. Wirklich globale Variablen kann man meiner Meinung nach auch ohne Klasse benutzen. Beispiel Ruby:
Code:
Klasse.variable = 1
$variable = 1
Ersteres ist eine öffentliche Klassenvariable (dass es schlechter Stil ist, lassen wir jetzt mal außen vor), letzteres ist eine in der Interpreterinstanz für die gesamte Anwendung globale Variable. Ich finde, der Unterschied ist deutlich genug.

Also ich war immer der Meinung das die Begriffe Member- und Instanzvariable synonyme sind und static declarierte Variable egal welchen access modifierer sie besitzt dann immer als Klassenvariable zu sehen (und zu nennen ) sind. AFAIK ist das auch die allgemeine Nomenklatur in der Literatur.
So hatte ich das eigentlich auch immer verstanden. :)
 
Original geschrieben von squeaker
Ok - hier mal um das mit der Nomenklatur zusammenzubringen -

static = Klassenvariable
non-static = Member bzw. Instanzvariable

Wenn ich das vorhin durcheinandergeworfen habe, tut es mir leid.

Richtig, das wird wohl in allen OO-Sprachen mehr oder weniger genauso sein, denke ich.
 
Original geschrieben von Dario Linsky
Klar Tom, genau das meinte ich doch. Das sind ja auch keine globalen Variablen bzw. Methoden in diesem Fall. Es gibt einige Sprachen (ich weiß nicht, ob Smalltalk dazugehört), bei denen es trotz wirklich durchgehender OO-Strukturen globale Variablen gibt - Ruby z.B. - aber in Java gibt es diese eben nicht.

String genommen sind in Ruby die Globalen Variablen sogar instanzvariablen.

holyfly@eclipse:~> ruby
puts self
main
holyfly@eclipse:~>

In ruby ist das "weisse blatt papier" eine Instanz. Also ist eine Variable dort, eine Instanzevariable ;)
 
Original geschrieben von squeaker
Dann sind sie ja genau wie die Java "globals"

Ja nur mit einem Unterschied.

In Ruby ist alles ein Object so ist die leere Datei eine instanze von Object.
Nachprüfbar mit:

$ ruby
puts self.class
ausgabe:; Object

womit eine dort definierte Klasse:
Code:
a = 3;
class SubClass
   def methode
       a
   end
end
puts SubClass.new.methode
wie erwartet a ausgibt. Sprich SubClass verhält sich genauso wie follgende Java Klasse

Code:
public class MainClass {
 
   public final String a = "3";
  
   public MainClass () { 
    System.out.println(new SubClass().methode()));

   public class SubClass {
      public String methode() {
       return a;
      }
   }    
}
 
Original geschrieben von Dario Linsky

>Natürlich gibt es Konstanten in Java, warum sollte es sie nicht geben?

Dann möchte ich jetzt einmal eine Beispieldeklaration einer Konstante in Java hier sehen.

>Aber was sollen denn bitte "unveränderliche Variablen" sein? Das ist doch ein Widerspruch in sich: wenn etwas unveränderlich ist, kann es nicht mehr variabel sein.

Code:
class MyClass
{
 private int  anzahl1 = 0;
 protected int anzahl2 = 1;
 public int anzahl3 = 2;
 private final int anzahl4 = 5;
 public final int anzahl5 = 10;
 protected final int anzahl6 = 8;
}

Es sind alles Variablen, richtig? Wenn dem so ist, warum sind manche davon nicht mehr änderbar? Oder heissen die dann jetzt deshalb plötzlich Konstante?
 
womit sich wieder die Frage stellt, die sich durch den ganzen Thread zieht. Wenn sich etwas verhält wie z.B. eine Konstante bzw. eine globale Variable, ist es dann auch eine.

Sprich - wird der Name vom Verhalten bestimmt oder hat er damit nichts zu tun.
 
Original geschrieben von squeaker
womit sich wieder die Frage stellt, die sich durch den ganzen Thread zieht. Wenn sich etwas verhält wie z.B. eine Konstante bzw. eine globale Variable, ist es dann auch eine.

Sprich - wird der Name vom Verhalten bestimmt oder hat er damit nichts zu tun.

Nein du kannst es wenden wie du willst, dennoch ist eine öffentliche statische Klassenvariable
keine Globale Variable.
;)

Denn mann greift nicht auf eine Variable zu, mann greift nichtmal auf etwas zu was wie eine Variable aussieht.
 

Neue Beiträge

Zurück