Interface Runnable Frage / Schnittstellen allgemein

Helgon

Bekanntes Mitglied
Hey, ich hab ein kleines Problem

Java:
import java.util.concurrent.*;

public class envi  {


	public static void main(String[] args) {
			
		Runnable r = new Runnable(new Test());
		
		new Thread(r).start();
		
		
	}


}

Java:
import java.awt.Point;

public class Test  implements Runnable  {
	
	final Point p = new Point();

	
	@Override 
	public void run(){
		
		int x = (int) (Math.random() * 1000);
		int y = x;
		
		while(true){
			p.x = x;
			p.y = y;
		}
		
	}
	
}

Der Fehler ist beim erzeugen des Runnable Objects "Cannot instantiate the type Runnable"

Das komische ist, wenn ichs mit ner annonymen Klasse mache gehts.

Und kurz ne OT Frage, weil mir das nicht ganz klar ist.

Schnittstellen sind doch der "Ersatz" für die nicht vorhandene Mehrfachvererbung (wie in bspw. c++)
Wenn ich dann z.b. auf die Klasse/Methoden der Schnittstelle zugreifen will, muss ich diese dann immer implementieren?
Hmm.. ich merk grad das es etwas ungüstig formuliert ist. Also nochmal:
Ich hab mir das hier angeschaut Implementing an Interface (The Java™ Tutorials > Learning the Java Language > Interfaces and Inheritance)
und hab folgende Frage.

Wenn ich Methoden aus der Schnittstelle in einer Klasse überschreiben möchte (wie in meinem Beispiel oben der Fall), muss ich die Schnittstelle dann implementieren oder nicht?
In der Klasse wo ich dann tatsächlich ein Objekt der Schnittstelle erzeuge muss es definitiv implementiert sein, oder nicht? (Bei anonymen Klassen aber nicht, oder?)

Hoffe man verstehts, ansonsten muss ichs nochmal versuchen zu formulieren 🙂

Grüße
 
Zuletzt bearbeitet:
Runnunble ist ein Interface, davon kannst du keine Objekte erstellen.

Java:
public class envi  {

    public static void main(String[] args) {
            
        Test test = new Test();
        new Thread(test).start();
    }
}
 
Achso, das erklärt einiges.

Nochn kleines Verständniss Problem 🙂 - dachte, weil es als "alternative" zu Mehrfachvererbung eingeführt wurde, dass es eben dann auch irgendwie ein pendant zu nem Objekt wäre

Danke
 
Interfaces sind kein "Ersatz" für die nicht vorhandene Mehrfachverwerbung, also es ist nicht ihr primärer Zweck.
Sie machen aber quasi sowas wie eine Mehrfachvererbung wie in C++ möglich.
 

Neue Themen


Zurück
Oben