Interface Variablen und Methoden

MarioW1986

Bekanntes Mitglied
Guten Morgen zusammen,
ich weiß das Internet ist voll von Erklärungen aber irgendwie versteh ich es trotzdem nicht wirklich.

Also ich habe ein ziemlich großes Java Programm geschrieben was auch funktioniert aber ich glaube es ist nicht wirklich sauber programmiert. Daher würde ich dieses gerne jetzt umbauen. Dabei bin ich wiedermal über den Begriff Interfaces gestoßen.

Meine Frage ist jetzt, wenn ich eine Variable in einer Interface Klasse deklariere und diese in einer Klasse Klasse_1 verwenden möchte, wie kann ich den Wert der Varaible aus dem Interface nachträglich noch verändern oder geht das überhaupt nicht?

Mir ist nämlich aufgefallen, dass wenn ich der Interfacevariable einen Wert zuweisen möchte, dann kommt immer eine Fehlermeldung "The final Field InterfaceName.Variablenname cannot be assigned"

Ich steh da ein bisschen auf dem Schlauch.
Ich habe auch noch Beispiele gefunden, bei denen eine get und eine set Methode mit im Interface deklariert wurde nur verstehe ich nicht wie dann der Bezug zu meiner Interfacevariable hergestellt wird.
Bin kein Anfänger aber auch kein Profi aber da steh ich grad voll auf dem Schlauch.

Wäre schön wenn mir jemand das mal in einem einfachen deutsch und eventuell anhand eines kleinen Beispiels erklären könnte.

Vielen Dank
 

Natac

Bekanntes Mitglied
Prinzipiell empfehle ich dir, dich mit dem Schlüsselwort "final" auseinander zu setzen.

Ein Interface (dt "Schnittstelle"), sagt einer Klasse was zu funktionieren hat (gibt Methoden vor). Dem Interface ist es dabei egal, wie die Klasse das macht. Somit kannst du per Interface auch nicht vorschreiben, dass die Implementation eine bestimmte Variable nutzen soll. Was du dann vielleicht suchst ist eine abstrakte Klasse.

Im Interface definierte "Variablen" sind eigentlich Konstanten. Der Compiler behandelt sie so, als würde "static final" davor stehen. Darum bekommst du auch einen Fehler, wenn du versucht dieser "Variablen" einen Wert zuzuweisen.

Zeig doch mal her deine Klasse und das Interface, dass du bereits entworfen hast. Vielleicht kann man da konkreter helfen, als so ganz ohne Code.
 
Zuletzt bearbeitet:

MarioW1986

Bekanntes Mitglied
Danke erstmal für die rasche Antwort.

Dann hier mal der Code:

Java:
package Deklaration;

import gui.ScreenDeklaration;

public interface Variablen extends ScreenDeklaration{
	public static int buttonPosX = (screenWidth / 4);
	public static int buttonPosY = (screenHeight / 2);
	public static int buttonWidth = (buttonPosX * 2);
	public static int buttonHeight = (buttonPosY / 2);
	
	public int MAIN_seite=0;
	public int sprache=0;
		
	public void plusMAIN_seite(int seite);
	public void minusMAIN_seite(int seite);
	public int aendernSprache(int sprache);
}

Java:
package gui;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;

import Deklaration.Variablen;
import kommunikation.SerielleKommunikation;
import datenbank.Datenaenderung_MAIN;
import datenbank.MySQLConnection;


public class StartupCheck extends JFrame implements Variablen{

	private static final long serialVersionUID = 1L;
	public static String[] ausgabe;
	private int mainSeite;
	
	public StartupCheck() {
		sprache =  Integer.parseInt(ausgabe[0]);
		MAIN_seite = Integer.parseInt(ausgabe[1]);
		
		final JFrame startCheck = new JFrame();	
		String[] test = new Datenaenderung_MAIN(0, MAIN_seite, sprache).getAusgabe();
		startCheck.setResizable(resize);
		startCheck.setUndecorated(undeco);
		startCheck.setBounds(screenPosX, screenPosY, screenWidth, screenHeight);
		startCheck.setLayout(null);
		

		final JButton btnCheck = new JButton();
		btnCheck.setBounds(buttonPosX, buttonPosY, buttonWidth, buttonHeight);
		btnCheck.setText(test[0]);		
		btnCheck.setActionCommand("btnCheck");
		btnCheck.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				//SerielleKommunikation.sendeSerialPort(0, btnCheck.getActionCommand());
				//SerielleKommunikation.sendeSerialPort("b", 1);
				new Funktionsauswahl(MAIN_seite);
				startCheck.dispose();
			}
			
		});
		startCheck.add(btnCheck);
		startCheck.setVisible(visible);	
	}
	
	public static void main(String[] args) {
		new MySQLConnection("main");
		new SerielleKommunikation();
		ausgabe = new Datenaenderung_MAIN().getAusgabe();
		new StartupCheck();
	}

	
	@Override
	public int aendernSprache(int sprache) {
		return Integer.parseInt(ausgabe[0]);
	}

	@Override
	public void plusMAIN_seite(int seite) {
		
	}

	@Override
	public void minusMAIN_seite(int seite) {
		
	}


Ich hoffe damit kannst du was anfangen. Ich hab das jetzt mal so gelassen wie ichs grad bearbeitet habe. Heißt dass da auch noch oben die 2 Fehler drinne sind bei denen ich den Interfacevariablen was zuweisen wollte.

Danke schonmal
 

Natac

Bekanntes Mitglied
  1. Warum alles static? Nimm das raus! Gerade in der Klasse "StartupCheck".
  2. Warum ist StartupCheck ein JFrame (
    Code:
    extends JFrame
    )? Das solltest du rausnehmen, da du den eigentlichen Frame doch in Zeile 25 erzeugst (
    Code:
    final JFrame startCheck = new JFrame();
    ).
  3. Entscheide dich für eine Notation. Entweder camelCase oder snake_case. In Java üblich ist camelCase.
  4. Ich sehe nicht, wo du
    Code:
    screenWidth
    und
    Code:
    screenHeight
    definierst.
  5. Du scheinst mir das Interface als Abstrakte Klasse benutzen zu wollen. Bitte setzte dich mit dem Schlüsselwort "abstract" auseinander und wandle dann Variablen in eine abstrakte Klasse um, von der du StartupCheck erben lässt.

Das wars erstmal soweit, was ich in deinem Code sehe.

Warum möchtest du denn überhaupt dieses Interface (und auch
Code:
ScreenDeklaration
) bauen? Sind die Variablen und Methoden nicht viel besser direkt in "StartupCheck" aufgehoben?
 
Zuletzt bearbeitet:

MarioW1986

Bekanntes Mitglied
Danke schonmal,
ScreenDeklaration hatte ich noch vergessen. Das ist wiederum auch ein Interface, welches du hier jetzt siehst:

Java:
package gui;

import java.awt.Dimension;
import java.awt.Toolkit;

public interface ScreenDeklaration {
	Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
	public int screenPosX = 0;
	public int screenPosY = 0;
	public int screenWidth = screen.width;
	public int screenHeight = screen.height;
	
	public boolean resize = false;
	public boolean undeco = true;
	public boolean visible = true;	
	
}

Ich hatte das mit dem Interface erst nicht, bin aber gestern auf irgendein Problem gestoßen (hab leider vergessen was das war. Gestern ist natürlich auch schon wieder sehr lange her :D) Auf jedenfall hab ich dann heute morgen angefangen mich damit auseinander zu setzen.

Ich stoße immer wieder auf das Problem, dass ich mit den Begrifflichkeiten nicht zurechtkomme bzw weiß ich nicht wann ich was benutzen sollte.

Wann machen Interfaces Sinn und wann nehme ich static und wann sollte ich besser die Finger davon lassen und was genau macht static? ich hab zwar ein Buch und habe eigentlich gedacht, dass ich es verstanden habe, wurde aber ja jetzt wieder eines Besseren belehrt.

Danke
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Methoden Methoden haben kein Zugriff auf variablen Java Basics - Anfänger-Themen 4
B Variablen von Methoden übertragen Java Basics - Anfänger-Themen 2
T Körper Brechnung - Lokale Variablen in Methoden übergeben Java Basics - Anfänger-Themen 10
J Klassen Variablen in andere Klassen oder Methoden übernehmen Java Basics - Anfänger-Themen 1
D Statische Variablen/Methoden Java Basics - Anfänger-Themen 3
K Welchen Typ haben Variablen in Default-Methoden und in statischen Methoden in Schnittstellen? Java Basics - Anfänger-Themen 4
B Variablen global abspeicher innerhalb von Methoden Java Basics - Anfänger-Themen 7
H Methoden und Variablen Java Basics - Anfänger-Themen 3
S ActionListener, Methoden und Variablen Java Basics - Anfänger-Themen 4
DaniSahne96 Methoden Variablen aus Methoden benutzen Java Basics - Anfänger-Themen 11
X OOP Methoden und Variablen in anderer Klasse verwenden Java Basics - Anfänger-Themen 5
J Arrays, Variablen an andere Methoden weitergeben Java Basics - Anfänger-Themen 3
U Mit Methoden Variablen in main ändern Java Basics - Anfänger-Themen 7
C Variablen zwischen Methoden übergeben Java Basics - Anfänger-Themen 9
G Methoden-Parameter und Return Statements mit variablen Daten Java Basics - Anfänger-Themen 3
G Methoden + variablen als final definieren? Java Basics - Anfänger-Themen 3
G Übertragen von Variablen auf andere klassen oder Methoden Java Basics - Anfänger-Themen 2
A Problem: Aufruf von Methoden mit Variablen Java Basics - Anfänger-Themen 7
D Wie kann Variablen,Methoden Klassenübergreifend zugreifen? Java Basics - Anfänger-Themen 4
D Funktionen/Methoden/Variablen includieren? :) Java Basics - Anfänger-Themen 4
C auf Variablen von Methoden einer anderen Klasse zugreifen Java Basics - Anfänger-Themen 7
D static Methoden/Variablen Java Basics - Anfänger-Themen 11
O Welcher Object-Lock-Pool bei static Variablen? Java Basics - Anfänger-Themen 3
T variablen klassen übergreifend Java Basics - Anfänger-Themen 12
T Variablen Java Basics - Anfänger-Themen 1
N Verständnis Frage zu Variablen Java Basics - Anfänger-Themen 3
M Aufsummieren von variablen Wertegrößen Java Basics - Anfänger-Themen 17
M Mehrere Daten/ Variablen Speichern Java Basics - Anfänger-Themen 9
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
ashi Variablen aufrufen Java Basics - Anfänger-Themen 17
U Warum kann ich, auf private Variablen zugreifen, wenn ich ein Objekt in der Klasse, die private Variablen hat erstelle und dort drauf zugreifen will? Java Basics - Anfänger-Themen 7
B Konkatenieren eines Strings und inkremtierenden Zahl zu einer INT Variablen Java Basics - Anfänger-Themen 7
A 2 Strings vergleichen in einer methode wenn man mit Globalen variablen arbeitet Java Basics - Anfänger-Themen 12
C Konstruktoren und Variablen Java Basics - Anfänger-Themen 42
F Auf Variablen eines Konstruktors zugreifen Java Basics - Anfänger-Themen 4
N Variable aus anderen Variablen in statischer Klasse berechnen/abspeichern? Java Basics - Anfänger-Themen 4
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
B Variablen Variablen übertragen ohne Klassen Java Basics - Anfänger-Themen 5
T Java Swing - Dreieck zeichnen mit verschiedenen Variablen Java Basics - Anfänger-Themen 8
Arif Vererbung Methodenvererbung mit finalen Variablen Java Basics - Anfänger-Themen 1
M Wie kann ich ein Objekt erstellen, wenn sich der Klassenname in einer Variablen befindet? Java Basics - Anfänger-Themen 10
S Variablen Variablen in einer Schleife erstellen lassen Java Basics - Anfänger-Themen 11
J Ich brauche Hilfe bei einem Code (Variablen speichern) Java Basics - Anfänger-Themen 29
F Variablen Werte einer Klasse überschreiben Java Basics - Anfänger-Themen 4
N Speichern von Werten in Variablen nach Schließen des Programms Java Basics - Anfänger-Themen 3
J Frage dazu Variablen klassenübergreifend zu verändern Java Basics - Anfänger-Themen 22
M Java Instanz-Variablen ? Java Basics - Anfänger-Themen 3
M Variablen umbenennen Java Basics - Anfänger-Themen 1
P Zugriff auf Variablen anderer Klassen in Greenfoot Java Basics - Anfänger-Themen 1
mars90 Fehler in der Variablen Deklaration Java Basics - Anfänger-Themen 8
E Variablen in formatierter Ausgabe Java Basics - Anfänger-Themen 15
V Schleife für das Einlesen von Werten für int Variablen, die Bestandteil von Arrays sein sollen Java Basics - Anfänger-Themen 16
M Komisches Verhalten der Variablen Java Basics - Anfänger-Themen 6
H Variablen Multiplikation einer inkrementierten Variablen Java Basics - Anfänger-Themen 5
scratchy1 Variablen vertauschen wenn Bedingung "umgedreht" wird Java Basics - Anfänger-Themen 40
J Variablen mit einer anderen Klasse bekannt machen Java Basics - Anfänger-Themen 7
C Methoden Problem beim Speichern von Variablen Java Basics - Anfänger-Themen 1
A Übergreifende Variablen Java Basics - Anfänger-Themen 17
A Variablen Verständnisfrage bzgl. Variablen/Referenzen Java Basics - Anfänger-Themen 3
H Variablen Methode zum Abfragen von Variablen aus Subklassen Java Basics - Anfänger-Themen 9
P Variablen Variablen voneinander abhängig Java Basics - Anfänger-Themen 54
F Liste nach einer Variablen sortieren Java Basics - Anfänger-Themen 6
L Variablen in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
M For-Schleife durch zwei versch. Variablen begrenzen Java Basics - Anfänger-Themen 27
P Liste auslesen und in Variablen speichern Java Basics - Anfänger-Themen 7
temi Redundante Variablen Java Basics - Anfänger-Themen 29
Aprendiendo Zweifel mit versteckter Variablen Java Basics - Anfänger-Themen 16
L Variablen einmal nur zu weisen Java Basics - Anfänger-Themen 62
R Abfrage von Variablen in Unterklassen einer ArrayList Java Basics - Anfänger-Themen 9
M Listener für Button - Wert von Variablen verändern Java Basics - Anfänger-Themen 14
S Vererbung Variablen klassenübergreifend nutzen Java Basics - Anfänger-Themen 42
R Auf Variablen einer anderen Klasse zugreifen? Java Basics - Anfänger-Themen 1
D Fehlermeldung obwohl Variablen bereits deklariert sind? Java Basics - Anfänger-Themen 14
E 2 Probleme - Datum & private finale Variablen Java Basics - Anfänger-Themen 5
Aruetiise Variablen JFrame und Variablen Java Basics - Anfänger-Themen 3
L Variablen dekleration + reset Java Basics - Anfänger-Themen 16
T Übernahme einer Variablen im ActionListener/ActionEvent Java Basics - Anfänger-Themen 2
D Kapselung final Variablen mit Getter? Java Basics - Anfänger-Themen 2
C Variablen von einem JFrame in einen anderen übertragen Java Basics - Anfänger-Themen 3
P Interface Variablen-Inhalte werden nicht übergeben Java Basics - Anfänger-Themen 3
C Variablen in Schleifen außerhalb verwenden Java Basics - Anfänger-Themen 2
S Variablen Flexible Variablen Namen Java Basics - Anfänger-Themen 3
R Erste Schritte 3 Variablen hochzählen lassen Java Basics - Anfänger-Themen 1
RowdyN Variablen Variablen beliebig benennen? Java Basics - Anfänger-Themen 6
S OOP Variablen zwischen mehreren Klassen Java Basics - Anfänger-Themen 11
T Koordinatensystem zeichnen - Variablen merken? Quadratische Funktion zeichnen? Java Basics - Anfänger-Themen 5
H Variablen einer Schleife zwischenspeichern Java Basics - Anfänger-Themen 2
P Klassen Variablen von einer Klasse zur anderen Java Basics - Anfänger-Themen 5
H Objekt überschreibt Variablen vorheriger Objekte Java Basics - Anfänger-Themen 2
P Variablen in Excel speichern Java Basics - Anfänger-Themen 6
S PHP Aufruf mit mehreren Variablen Java Basics - Anfänger-Themen 2
F Variablen unterschiedlicher Datentypen Java Basics - Anfänger-Themen 6
S ActionListener und Statische Variablen Java Basics - Anfänger-Themen 4
Arif Vererbung Vererbung Variablen überschreiben Java Basics - Anfänger-Themen 1
L Vergleich zweier Variablen, mit Abweichung Java Basics - Anfänger-Themen 3
P Variablen einer Methode in andere Method übergeben Java Basics - Anfänger-Themen 6
G Variablen Verwendung von Variablen in anderer Klasse Java Basics - Anfänger-Themen 6
P Textfelder in Variablen speichern Java Basics - Anfänger-Themen 13
K arraygröße durch variablen Konstruktor? Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben