statische methoden und sichtbarkeit

Status
Nicht offen für weitere Antworten.
H

hoodi

Gast
hallo, ich bin im moment ein wenig verwirrt.

ich habe eine klasse A, in der eine prozedur (stat. methode) aufgerufen wird. sie ist
Code:
public
.

diese methode ist definiert in einer klasse B (es besteht keinerlei vererbung zwischen den klassen)

frage: warum gibt es beim aufurf der genannten methode in der methode der klasse B den fehler

Code:
"cannot find symbol: method x"


ich dachte,
Code:
static
oder nicht-static haben mit der sichtbarkeit nix zu tun?

warum kann ich in klasse A alle nicht-statischen methoden der klasse B aufrufen, aber nicht die statische methode?
sind doch beide
Code:
public
...

wenn ich die methodendefinition in klasse A haue, dann funktioniert alles.


bitte um aufklärung. was gibts noch zu beachten zwischen static und nicht-static methoden, und vorallem auch variablen.
weil wie gesagt darauf bin ich eher zufällig gestossen, ich dachte der allereinzigste unterschied liegt darin, dass statische methoden kein objekt brauchen und nicht-statische schon...

dankeschön !
 
H

hoodi

Gast
ps: sorry für den code.. die site hat mir aber vorgeschlagen, die schlüsselwörter in code zu packen...

pps: sorry für doppelpost ;)
 

André Uhres

Top Contributor
hoodi hat gesagt.:
..warum kann ich in klasse A alle nicht-statischen methoden der klasse B aufrufen, aber nicht die statische methode?..
Geht doch:
Code:
package basics;
/*
 * KlasseA.java
 */
public class KlasseA {
    public KlasseA() {
        KlasseB.x();
    }
    public static void main(String[] args) {
        new KlasseA();
    }
}
class KlasseB{
    public static void x(){
        System.out.println("x");
    }
}
 
G

Guest

Gast
Code:
public class Konto
{
	private static int aktuelleKNR = 1;
	private int kontoNR;
	private Kunde kunde;
	private double kontoStand;

	public void abheben(double betrag)
	{
		if (kontoStand - betrag < 0.0)
		{System.out.println("Nicht genug Geld auf dem Konto!");}
		else
		{kontoStand = kontoStand - betrag;}
		
	}
	public void einzahlen(double betrag)
	{
		kontoStand = kontoStand + betrag;
	}

		public static void ueberweisen(Konto konto1, Konto konto2, double betrag)
	{
		konto1.abheben(betrag);
		konto2.einzahlen(betrag);
	}
}

Code:
public class Bankgeschaeft
{
	
	public static void main(String[] args)
	{
		Konto konto1 = new Konto (kunde1, 755.90);  // kunde1 und kunde 2 sind als gegeben zu sehen!
		Konto konto2 = new Konto (kunde2, 0.0);       // ~
		  
		ueberweisen(konto1, konto2, 55.90);
		
		System.out.println(konto1.getKontostand());
		System.out.println(konto2.getKontostand());
		
	}

}

hier sagt er mir beim aufruf von bankgeschaeft:

Code:
cannot find symbol: method ueberweisen

wenn ich aber die komplette methodendefinition von ueberweisen in die klasse bankgeaschaeft schreibe
(vor die main-methode), dann funktioniert es.
 
S

SlaterB

Gast
ueberweisen(konto1, konto2, 55.90);
->
Konto.ueberweisen(konto1, konto2, 55.90);


woher sollte Java sonst wissen wo sich die Operation befindet?
automatisch alle 1000de Klassen zu durchsuchen wäre auch nicht gerade sinnvoll

und was ist, wenn 2 Klassen die gleiche statische Operation haben? :cool:
 
G

Gast

Gast
wenn 2 klassen die gleiche stat. operation haben, dann greift
doch überschatten oder? er holt sich doch automatisch die, die auf die gegebenen eingabeparameter matcht oder nicht?

aber zum thema: also ist es so, dass eine klasse alle nicht-statischen operationen einer anderen kennt, aber die statischen nicht?
bei statischen muss ich ihm sagen, wo sie ist, meine ich damit, und bei nicht-statischen nicht?
 
S

SlaterB

Gast
bei nichtstatischen musst du doch eh das Objekt angeben,
das Objekt kennt seine Klasse, fertig

Überschatten hilft auch nicht (mehr) wenn die Parameter gleich sind
 
G

Gast

Gast
okay.

noch ganz kurz: wenn die klasse konto jetzt abgeleitet wäre von bankgeschaeft, dann müsste man nach wie vor die methode in bankgeschaeft Konto.ueberweisen nennen oder?

aber wenn konto die vaterklasse wäre, dann müsste ich es nciht machen, weil bankgeschaeft die methode mitgeerbt hat? ist das richtig?

danke für eure hilfe
 

function

Bekanntes Mitglied
ja das wäre richtig, sobald eine klasse von einer anderen etwas erbt kennt die erbende alle methoden der oberklasse.

ich würde nur einmal überlegen ob die methode ueberweisen, wirklich in konto stehen sollte und nicht evtl einfach in bankgschaeft...
denke da an einen sauberen programmierstil, weil eine ueberweisung ja ein bankgeschäft/bankaktion ist und grundsätzlich nicht ein konten problem.
 
S

SlaterB

Gast
> aber wenn konto die vaterklasse wäre, dann müsste ich es nciht machen, weil bankgeschaeft die methode mitgeerbt hat? ist das richtig?

das stimmt irgendwie, wobei ich das nicht vererben nennen würde,
auch wenn es sich genauso verhält
(vielleicht nicht in allen Bereichen)

mir wäre am liebsten, wenn das gar nicht gehen würde ;)
 

JPKI

Top Contributor
function hat gesagt.:
ja das wäre richtig, sobald eine klasse von einer anderen etwas erbt kennt die erbende alle methoden der oberklasse.
Nicht ganz, dabei kommt es auf die Sichtbarkeit der Methoden an. Eine Subklasse kann nur die öffentlichen und geschützten Methoden der Oberklasse "sehen" (also public und protected). Bei private geht das nicht).
 

function

Bekanntes Mitglied
ja das stimmt wohl, abe rich hatte mich auch eher auf dieses problem beschränkt, sonst müßte man ja auch ncih sagen, das von final klassen nicht geerbt werden kann, final methoden nicht überschrieben werden können, etc. pp
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C nicht statische Methoden Java Basics - Anfänger-Themen 4
D statische generische Methoden Java Basics - Anfänger-Themen 3
D Statische Variablen/Methoden Java Basics - Anfänger-Themen 3
S Zufallszahl (Statische Attribute und Methoden) Java Basics - Anfänger-Themen 10
F Privater Konstruktor und statische Methoden Java Basics - Anfänger-Themen 4
S Java Fragen Konstruktor & Statische Methoden Java Basics - Anfänger-Themen 4
A Statische Variable in Methoden Java Basics - Anfänger-Themen 7
M Wann statische Methoden/Attribute? Java Basics - Anfänger-Themen 2
M Statische Methoden in Interface/Abstrakte Klasse Java Basics - Anfänger-Themen 6
J statische Methoden auf eine LinkedList initialisieren? Java Basics - Anfänger-Themen 5
J Unterschied zwischen statische und nicht statische Methoden? Java Basics - Anfänger-Themen 14
M Statische Methoden Java Basics - Anfänger-Themen 22
F Generische Typen auch für statische Methoden? Java Basics - Anfänger-Themen 13
A Stilfrage: statische Methoden und Attribute auf jeden Fall verhindern? Java Basics - Anfänger-Themen 5
nadoria statische Methoden (Klassenmethoden) Java Basics - Anfänger-Themen 3
G Statische Methoden? Java Basics - Anfänger-Themen 2
kb statische methoden und throws exception Java Basics - Anfänger-Themen 2
N Unterschied statische Attribute u. Methoden <-> objekt Java Basics - Anfänger-Themen 4
S Statische Felder - statische Methoden Java Basics - Anfänger-Themen 2
D Statische und Nicht-Statische Methoden Java Basics - Anfänger-Themen 7
K Statische Methoden!? Java Basics - Anfänger-Themen 8
J Die statische Main-Methode ändert Instanzvariable? Java Basics - Anfänger-Themen 10
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
C Größte Zahl aus einem Array ermitteln(als statische Methode) Java Basics - Anfänger-Themen 31
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
V Variablen statische Variable einer Objektvariable zuordnen Java Basics - Anfänger-Themen 3
S Klassen statische Objekterzeugung vor Konstruktoraufruf??? Java Basics - Anfänger-Themen 6
Queiser Nicht statische Klassen Java Basics - Anfänger-Themen 6
B Statische Methode return funktioniert nicht. Java Basics - Anfänger-Themen 19
N Auf statische Methode zugreufen Java Basics - Anfänger-Themen 9
R Methoden Nicht statische Methode aus Main aufrufen Java Basics - Anfänger-Themen 2
S ActionListener und Statische Variablen Java Basics - Anfänger-Themen 4
D Statische Objekte mit variablem Parameter Java Basics - Anfänger-Themen 1
K Wieso muss man finale statische Variablen sofort oder eben im Konstruktor initialisieren? Java Basics - Anfänger-Themen 2
F Statische Klasse => Flaschenhals? Java Basics - Anfänger-Themen 10
T Statische Arrays von Objekten Java Basics - Anfänger-Themen 2
B Java Programm ohne statische Main Methode aufrufen Java Basics - Anfänger-Themen 5
S Datentypen nicht lineare STATISCHE Datenstruktur? Java Basics - Anfänger-Themen 10
E statische Variable ändert sich Java Basics - Anfänger-Themen 7
P Klassen statische oder dynamische(?) Klasse Java Basics - Anfänger-Themen 3
A Nicht-statische Methode in einer statischen aufrufen Java Basics - Anfänger-Themen 10
A statische Arraylist Java Basics - Anfänger-Themen 6
Q Variablen Statische Variablen Java Basics - Anfänger-Themen 8
V OOP Statische Klassen-Attribute vererben Java Basics - Anfänger-Themen 4
K Statische Bindung Java Basics - Anfänger-Themen 6
B dynamische/statische Typen Java Basics - Anfänger-Themen 2
L Methoden Auf statische Methode einer anderen Klasse zugreifen, die Array zurückgibt Java Basics - Anfänger-Themen 3
S statische Methode nebenläufig Java Basics - Anfänger-Themen 2
R Aufruf statische Methode Java Basics - Anfänger-Themen 7
C Relativer Pfad - Statische Methode Java Basics - Anfänger-Themen 6
A Statische Methode "vererben" - Zwang durch annotation processor Java Basics - Anfänger-Themen 10
sqsh statische jlabels dynamisch verwalten Java Basics - Anfänger-Themen 2
S Statische Klassen/ Singleton Java Basics - Anfänger-Themen 13
E Statische Member können nicht vererbt werden? Java Basics - Anfänger-Themen 10
B statische Variable Java Basics - Anfänger-Themen 10
M Statische und nicht-statische Funktionen: Desktop.browse(uri); Java Basics - Anfänger-Themen 4
A Stilfrage: statische Variable mit Instanz der gleichen Klasse Java Basics - Anfänger-Themen 8
H Statische generische Methode Java Basics - Anfänger-Themen 2
A statische Attribute: Vererbung und Zugriff darauf Java Basics - Anfänger-Themen 15
hdi Observer als statische Klasse ? Java Basics - Anfänger-Themen 2
hdi statische synchronisation Java Basics - Anfänger-Themen 6
G statische ArrayList? Java Basics - Anfänger-Themen 8
K Statische Variablen von Objekten im Array Java Basics - Anfänger-Themen 15
K nicht-statische Methode aufrufen Java Basics - Anfänger-Themen 3
S statische variable initialisieren mit exception Java Basics - Anfänger-Themen 2
G statische Variable zugreifen bzw. setzen Java Basics - Anfänger-Themen 6
T in statischem Kontext auf nicht statische Variable beziehen Java Basics - Anfänger-Themen 5
M Statische Funktion Java Basics - Anfänger-Themen 2
M öffentliche nicht-statische Funktion fremder Klasse ausführn Java Basics - Anfänger-Themen 16
C args[] als statische Variablen speicher oder wie? Java Basics - Anfänger-Themen 12
P nicht statische methode instantiieren Java Basics - Anfänger-Themen 7
K statische variablen und methode Java Basics - Anfänger-Themen 3
H Was ist nocheinmal eine statische Klasse? Java Basics - Anfänger-Themen 6
H statische, dynamischer Typ von Variablen Java Basics - Anfänger-Themen 1
M Konstruktor eine statische Methode? Java Basics - Anfänger-Themen 9
H statische,dynamische Bindung Java Basics - Anfänger-Themen 4
O nicht-statische Inhalte auf statische Inhalte verweisen Java Basics - Anfänger-Themen 19
M wann statische klassen? Java Basics - Anfänger-Themen 14
U statische Variablen Java Basics - Anfänger-Themen 12
F Statische Methode - Nicht Statische Methode Java Basics - Anfänger-Themen 10
emreiu Methoden Rekursive Methoden Runter- & Hochzählen Java Basics - Anfänger-Themen 2
U Funktionale Interfaces mit mehreren abstrakten Methoden? Java Basics - Anfänger-Themen 8
MoxMorris Einige Methoden aus verschiedenen Klassen nacheinander auszuführen läuft seltsam Java Basics - Anfänger-Themen 2
J Argumente in Methoden übergeben Java Basics - Anfänger-Themen 1
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
Say Class scope und Instance scope und Getter nur selbstgeschrieben Methoden Java Basics - Anfänger-Themen 11
I Gleiche Klassen und Methoden in unterschiedlichen Projekten nutzen Java Basics - Anfänger-Themen 2
N Klassen Methoden anderer Klassen aufrufen Java Basics - Anfänger-Themen 4
Renjiroo Java Bmi Rechner mit Methoden Java Basics - Anfänger-Themen 4
frager2345 Thread - Methoden synchronized deklarieren Java Basics - Anfänger-Themen 10
M Designentscheidung von Attributen/Methoden im Falle von Vererbung Java Basics - Anfänger-Themen 8
berserkerdq2 Findet eine parallele Verarbeitung in Java bei Threads erst statt, wenn man die Methoden auch synchronized? Und wie sieht bei Conditions aus? Java Basics - Anfänger-Themen 8
Alen123 Erstes Arbeiten mit Methoden. Java Basics - Anfänger-Themen 5
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
M Andere Methoden in anderen Klassen aufrufen Java Basics - Anfänger-Themen 11
L Methoden in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
D Gerade oder ungerade Zahl mittels Methoden Java Basics - Anfänger-Themen 13
M Erklärung von Ausnahmebehandlung in Methoden Java Basics - Anfänger-Themen 13
S Methoden 2 non-static Methoden, trotzdem Fehler "non static method can not be referenced from a static context" Java Basics - Anfänger-Themen 9
L Rekursive Methoden Java Basics - Anfänger-Themen 14

Ähnliche Java Themen

Neue Themen


Oben