Interface implementiert aber kann nicht darauf zugreifen

Chr__Au

Mitglied
Hi ich weiß nicht ob der Titel nicht etwas in die Irre führt. Ich muss für mein Studium ein kleines Programm schreiben in dem ich eine Methode in einem Interface deklariere.
Java:
public interface IF_Kugel{
  void distance(IF_Kugel kugel2);
}
Java:
public class Kugel implements IF_Kugel{
  float x, y, z;
  int radius;
  kugel(float x, float y, float z, int radius){
    this.x = x;
    this.y = y;
    this.z = z;
  }
  void distance(IF_Kugel kugel2){
     float temp = kugel2 - this.x; // hier meckert der Kompiler immer dass X nicht in IF_Kugel (interface) deklariert wurde

  }
}
Jetzt habe ich noch in der TestKlasse ein Objekt:
Java:
IF_Kugel Kugel1 = new Kugel(5,6,4,2,2); // und das gleiche noch mal für Kugel2
erzeugt aber warum meckert der Kompiler?

Wenn ich das mit Interfaces so richtig verstanden habe dann müsste ich doch, wenn ich eine Referenz einer Superklasse also eines Interface erwarte, auch alle Objekte von Klassen die das Interface implementiert haben akzeptieren. natürlich wurde die Methode distance über kugel1.distance(kugel2) aufgerufen.

Ich hoffe ich habe jetzt hier keine Fehler geschrieben aber auf dem PC in der Hochschule war meiner Meinung alles richtig bzw. Wenn ich in der Methode distance eine Referenz von Kugel erwarte klappt alles (natürlich habe ich die anderen Referenzen angepasst).

Kann mir jemand helfen? Ich hoffe es war nicht zu kompliziert geschrieben.
 

Chr__Au

Mitglied
ja schon das wundert mich ja weil wenn ich im Interface x deklariere dass ist X ja eine static final oder?

Ergänzend zu oben möchte ich noch sage ich habe das gefühl das irgend etwas nicht stimmt dass in distance eine Referenz von IF_Kugel erwartet wird. Aber so soll ich das Programmieren.
 
Zuletzt bearbeitet:
G

Gast2

Gast
schreib dir für x, y, z und radius einfach getter die du dann im interface deklarierst.
 

Chr__Au

Mitglied
schreib dir für x, y, z und radius einfach getter die du dann im interface deklarierst.

Das verstehe ich jetzt nicht so ganz. Die getter sind doch dann einfach dafür mir die Instanz-Variablen zurück die kann ich doch über this. aufrufen oder macht dass dann einen unterschied.

Ich weiß nicht ob das etwas bringt habe es mit NetBeans Programmiert.
 

Landei

Top Contributor
Java:
IF_Kugel Kugel1 = new Kugel(5,6,4,2,2);
Dein Konstruktor hat nur 4 Parameter, hier rufst du ihn aber mit 5 auf.
 
G

Gast2

Gast
Das verstehe ich jetzt nicht so ganz. Die getter sind doch dann einfach dafür mir die Instanz-Variablen zurück die kann ich doch über this. aufrufen oder macht dass dann einen unterschied.

Ich weiß nicht ob das etwas bringt habe es mit NetBeans Programmiert.

So würd ichs machen:
Java:
public interface IKugel {
    public double distance(IKugel kugel);

    public double getX();
    public double getY();
    public double getZ();
    public double getRadius();
}
Java:
public class Kugel implements IKugel {

    private double x;
    private double y;
    private double z;
    private double radius;

    public Kugel(double x, double y, double z, double radius) {
        this.x = x;
        this.y = y;
        this.z = z;
        this.radius = radius;
    }

    public double distance(IKugel kugel) {
        double distance = this.getX() - kugel.getX(); //<-- die Berechnung stimmt natürlich nicht
        return distance;
    }

    public double getX() {
        return x;
    }

    public double getY() {
        return y;
    }

    public double getZ() {
        return z;
    }

    public double getRadius() {
        return radius;
    }
}
 

Chr__Au

Mitglied
Ich habe mir jetzt die von mir programmierte Aufgabe gezogen und kann Sie jetzt veröffentlichen:

Java:
// Kugel.java
public class Kugel implements KugelIF{
    public float x, y, z, radius;



    Kugel(float x, float y, float z, float radius){
        this.x = x;
        this.y = y;
        this.z = z;
        this.radius = radius;
    }
    public void getDistance(KugelIF kugel2){
        float tem = kugel2.
        float a = (this.y);
        float b = (this.y);
        float c = (float)Math.pow((a*a+b* b), 0.5);

        
    }

// KugelIF.java
public class Kugel implements KugelIF{
    public float x, y, z, radius;



    Kugel(float x, float y, float z, float radius){
        this.x = x;
        this.y = y;
        this.z = z;
        this.radius = radius;
    }
    public void getDistance(KugelIF kugel2){
        
        float a = (kugel2.x - this.x);
        float b = (kugel2.y - this.y);
        float c = (float)Math.pow((a*a+b* b), 0.5);

        
    }

// TestKugel.java
public class TestKugel {
    public static void main(String[] args){

        KugelIF kugel1 = new Kugel(1.0f, 0.0f, 0.5f, 2.0f);
        KugelIF kugel2 = new Kugel(2.0f, 3.0f, -1.0f, 2.0f);

        kugel1.getDistance(kugel2);


    }
}

So meine frage ist jetzt warum NetBeans ein Fehler bei Zeile 26 und 27 anzeigt.
Fehlermeldung:

cannot find symbol
symbol: variable x
location: interface KugelIF
--

Ich hoffe Ihr könnt mir jetzt besser weiterhelfen. Ist halt schon gleich viel deutlicher.

PS: Danke EikeB ich werde mal das mit getter versuchen Danke.
 

Chr__Au

Mitglied
WOW danke es geht! Aber warum muss ich x,y,z über getter abrufen? Das verstehe ich jetzt noch nicht so ganz da ich ja eigentlich nichts geändert habe. Oder kann ich wenn ich ich einer Referenz welche vom Typ eines Interfaces ist und auf ein Objekt einer implementierten Klasse zeigt, nicht auf die Variablen und Methoden zugreifen kann die nur in der "Subklasse" initialisiert wurden?
 
G

Gast2

Gast
float a = (kugel2.x - this.x);
float b = (kugel2.y - this.y);
Das Interface kann ja gar nicht wissen welche Variablen die implementierende Klasse hat, deswegen kannst du auf diese auch nicht über das Interface zugreifen.
Bei den Gettern ist das anders. Du deklarierst diese Methoden im Interface, daher weiß java dass jede Klasse die das Interface implementiert mindestens diese Methoden zur verfügung stellt.
 

Chr__Au

Mitglied
Ok dann bringst du mich auf eine neue frage. Wenn ich jetzt noch eine Methode schreiben möchte die irgend etwas macht aber nur in meiner Klasse Kugel auftraten soll. Wie mach ich das nun dass ich über meine Interface ref. darauf zugreifen kann? sagen wir die Methode soll die die Hypotenuse berechnen.

Also ich meine die Methode distance(...) ruft die mehtode hypotenuse() auf, hypotenuse() ist nicht im interface enthalten.

Ich hoffe ihr versteht was ich mein.
 
G

Gast2

Gast
Je nachdem auf welchem Objekt du die Methode aufrufen willst.

1. Auf dem aktuellen(this) Objekt:
Da kannst du hypothenuse() ohne Probleme einfach in der distance() aufrufen.

2. Auf dem Objekt kugel2 (vom Typ IFKugel):
Hier musst du zuerst prüfen ob kugel2 wirklich vom Typ Kugel ist (instanceof). Danach castest du auf Kugel und kannst darauf dann hypothenuse() aufrufen.
 

Chr__Au

Mitglied
Ok danke. Dann schließe ich das Thema. Ich hab schon gedacht ich bin zu blöd so eine einfache Aufgabe zu lösen. Aber danke nochmal. Ich finde hier im Forum die Reaktionszeiten einfach genial.
 

Chr__Au

Mitglied
Für die Quadratwurzel gibt es die Funktion Math.sqrt(x). Ist schneller und hübscher zu lesen als Math.pow(x, 0.5).
Danke weiß ich nur in der letzten Klausur habe ich die Wurzelfunktion genommen und habe dafür Null punkte bekommen, da nur die Math.pow ... angegeben war. Und jetzt soll es einfach eine gedankenstütze für mich sein.
 

Landei

Top Contributor
Was ist denn das für ein pseudopädagogischer Schleimscheißer, der null Punkte dafür gibt, dass man die Wurzelfunktion zum Wurzelziehen nimmt? Aber vielleicht ist Math.pow() ja irgendwie didaktisch wertvoller. Warum dann nicht gleich Math.exp(0.5*Math.log(x))?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E abstrakte Klasse implementiert ein Interface Java Basics - Anfänger-Themen 40
K Nutzung einer Klasse die das Iterator-Interface implementiert Java Basics - Anfänger-Themen 0
G Interface java.util.Comparator: Wieso muss nur die Methode compare() implementiert werden Java Basics - Anfänger-Themen 2
P Vererbung Klasse erbt von abstrakter Klasse implementiert Interface Java Basics - Anfänger-Themen 2
T Klasse implementiert Interface Java Basics - Anfänger-Themen 5
B OOP: abstrakte klasse implementiert interface Java Basics - Anfänger-Themen 3
I No Jakarta Enterprise Beans found with interface ignorieren? Java Basics - Anfänger-Themen 2
I No EJB found with interface of type Java Basics - Anfänger-Themen 12
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
Say Abstrakt oder Interface Java Basics - Anfänger-Themen 3
Say public/default Interface Java Basics - Anfänger-Themen 9
D Interface Methode wird ungewollt in der Subklasse überschrieben Java Basics - Anfänger-Themen 5
W Intuitive interface für Komponenten Java Basics - Anfänger-Themen 4
I Browser integriert in Desktop Applikation - Webcam interface not found Java Basics - Anfänger-Themen 26
U Beispiel Methode size() vom "Collection"-interface... Wie kann man sichtbar machen, was die Methode unter der Haube macht? Java Basics - Anfänger-Themen 8
J Interface Comparable<T> Java Basics - Anfänger-Themen 10
M Interface oder Vererbung? Java Basics - Anfänger-Themen 12
D Interface Verständisfrage Java Basics - Anfänger-Themen 8
U Interface | constructor injection Java Basics - Anfänger-Themen 5
J Interface Interface korrekt implementieren Java Basics - Anfänger-Themen 5
A Methoden Vererbung und Interface Java Basics - Anfänger-Themen 14
T Interface Map und Map.Entry Java Basics - Anfänger-Themen 4
U Interface als PAramter (Vergleich) und ein Error Java Basics - Anfänger-Themen 9
I Interface von einer EJB Klasse, um Code zu reduzieren Java Basics - Anfänger-Themen 1
M Interface als Parameter einer Klasse Java Basics - Anfänger-Themen 8
M Wie kann ich eine Methode aus einem Interface in eine Klasse implementieren, so dass sie ihre Funktion ausführt? Java Basics - Anfänger-Themen 7
I JSON und Interface Java Basics - Anfänger-Themen 3
Kotelettklopfer Kleines Testprogramm mit Interface und einer Usereingabe Java Basics - Anfänger-Themen 16
J Interface methode aufrufen (interface parameter) Java Basics - Anfänger-Themen 7
CptK Interface Functional interface mit mehreren Methoden Java Basics - Anfänger-Themen 6
L Interface & Comparable Java Basics - Anfänger-Themen 15
T Interface Java Basics - Anfänger-Themen 0
CptK Generics: Klassen die Interface implementieren, aber selbst nicht das Interface sind Java Basics - Anfänger-Themen 8
B Interface List - Objekt übergeben? Einzelnes Objekt geht, aber Liste nicht? Java Basics - Anfänger-Themen 4
B Best Practice Unschlüssig ob Vererbung oder Interface Java Basics - Anfänger-Themen 2
C Interface und Konstruktor Java Basics - Anfänger-Themen 1
S Interface Equals und hashCode Java Basics - Anfänger-Themen 16
A Generische Klassen/Interface Java Basics - Anfänger-Themen 1
C Methoden-Parameter ist Interface Java Basics - Anfänger-Themen 5
B Collections Objektreferenz-ID in der Ausgabe (Comparator Interface) Java Basics - Anfänger-Themen 2
A Interface Kuddelmuddel Java Basics - Anfänger-Themen 4
C Collections List über Interface zugreifen Java Basics - Anfänger-Themen 32
S Interface Interface und seine Implementierung Java Basics - Anfänger-Themen 5
H abstract und interface Java Basics - Anfänger-Themen 4
F Interface Casting Java Basics - Anfänger-Themen 13
C Telefonliste mit interface implementieren Java Basics - Anfänger-Themen 30
L Klassen Kann eine Unterklasse einer abstrakten Klasse ein Interface implementieren? Java Basics - Anfänger-Themen 2
H Interface Java Basics - Anfänger-Themen 2
R Quicksort mit Interface Comparable Java Basics - Anfänger-Themen 6
T Interface Methode im Interface mit mehreren Parametern Java Basics - Anfänger-Themen 10
B Interface vs Abstract Java Basics - Anfänger-Themen 2
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
pkm Interface Funktionales Interface lässt sich nicht implementieren. Java Basics - Anfänger-Themen 2
Kornblume Comparable Interface für Objektvergleiche nutzen Java Basics - Anfänger-Themen 15
I Comparator<T> Interface als Methodenparamter Java Basics - Anfänger-Themen 4
J OOP Wie sollte ich das organisieren (Abstract? Interface?) Java Basics - Anfänger-Themen 33
J Java Interface/abstrakte Klassen Java Basics - Anfänger-Themen 2
E Interface nur von abstrakter Klasse implementierbar?! Java Basics - Anfänger-Themen 1
J Vererbung Abstrake Klasse <-> Interface Java Basics - Anfänger-Themen 5
C Interface als Datentyp eines Attributes? Java Basics - Anfänger-Themen 6
U Interface Bedeutung "Code to an interface rather than to an implementation." Java Basics - Anfänger-Themen 4
M Erste Schritte Prüfungsbeispiel: Interface / abstrakte Klassen Java Basics - Anfänger-Themen 8
M Maven Main-Methode Interface und Klasse Java Basics - Anfänger-Themen 2
R Interface Eigene Objekte in Listen sortieren mit Interface Comparable Java Basics - Anfänger-Themen 5
D Interface Amazon Skill Kit, Interface but method in other class? Java Basics - Anfänger-Themen 3
A Interface Abstrakte Interface Methode kann nicht benutzt werden Java Basics - Anfänger-Themen 10
J Compiler-Fehler class interface or enum expected Java Basics - Anfänger-Themen 1
T Vererbung und interface. Java Basics - Anfänger-Themen 1
N Interface Interface Erstellung Java Basics - Anfänger-Themen 3
kilopack15 Beziehung Interface - (abstrakte) Klasse -Unterklasse Java Basics - Anfänger-Themen 3
C Interface Fragen zum Interface Java Basics - Anfänger-Themen 7
Azazel Ist die abstract class das selbe wie ein interface ? Java Basics - Anfänger-Themen 33
K Interface: wie damit arbeiten Java Basics - Anfänger-Themen 4
lBlKha0s Fehlermeldung : class interface or enum expected Java Basics - Anfänger-Themen 9
T error: class, interface, or enum expected Java Basics - Anfänger-Themen 5
T Vererbung Interface Java Basics - Anfänger-Themen 5
F Interface aus anderem Package nutzen Java Basics - Anfänger-Themen 10
N Interface Daten einem Implementierten Interface zuweisen Java Basics - Anfänger-Themen 37
B Erste Schritte Wie definiere ich in Java ein Interface? Java Basics - Anfänger-Themen 6
L OOP Interface Prinzip? Java Basics - Anfänger-Themen 6
K Iterator-Interface implementieren mit Exception Handlung Java Basics - Anfänger-Themen 1
J Innerhalb Interfacemethode: Interface als Attribut Java Basics - Anfänger-Themen 2
A Frage zu Interface Java Basics - Anfänger-Themen 16
J Interface Java Basics - Anfänger-Themen 3
W Interface Java Basics - Anfänger-Themen 1
L Compiler-Fehler error: class, interface or enum expected Java Basics - Anfänger-Themen 2
N Generics Vererbung Wildcard Interface Java Basics - Anfänger-Themen 8
Shams Kann man von einem Interface aus auf die dieses implementierende Klasse zugreifen? Java Basics - Anfänger-Themen 4
S Generische Methode soll Objekte als Parameter erlauben die bestimmtes Interface implementieren^ Java Basics - Anfänger-Themen 9
J Frage zu dem Thema interface Java Basics - Anfänger-Themen 5
S Generics und Comparable Interface Java Basics - Anfänger-Themen 5
A Klasse,Vererbung,Interface,Singleton,Thread Java Basics - Anfänger-Themen 5
S Interface-Methode abrufen? Java Basics - Anfänger-Themen 2
M Konstanten in einem Interface definieren Java Basics - Anfänger-Themen 1
P interface Java Basics - Anfänger-Themen 1
F eigenes Listener Pattern mit Interface Java Basics - Anfänger-Themen 1
M Interface als Datentyp Java Basics - Anfänger-Themen 12
K Interface Methoden überschreiben Java Basics - Anfänger-Themen 1
C Klassendesign / Wann Interface implementieren und wann Klassen vererben? Java Basics - Anfänger-Themen 3
A Interface in Collection (Liste) angeben Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben