Wie sieht die Punktnotation in Java aus oder wie kann ich auf auf andere Klassen zugreifen?
Wie kann ich in der Klasse Telefon die Methoden aus der Klasse Telefonbuch verwenden ? Wenn ich es mit Punktnotation versuche wie z.B.
public void eintrag_hinzufuegen(String name)
{
Telefonbuch.hinzufuegen(name);
}
, kommt die Fehlermeldung : non static method cannot be referenced from a static context
1)
import java.util.ArrayList;
public class Telefon
{
protected ArrayList <Telefonbuch> telefonbuch;
protected boolean eingeschaltet;
public Telefon()
{
// initialise instance variables
telefonbuch = new ArrayList <Telefonbuch>();
}
public void anrufen (String name)
{
}
public void einschalten()
{
eingeschaltet = true;
}
public void telefonbuch_uebersicht()
{
}
public void eintrag_hinzufuegen(String name)
{
}
public void eintrag_entfernen(String name)
{
}
public boolean eintrag_suchen(String name)
{
}
}
2)
import java.util.Arrays;
/**
* Write a description of class Telefonbuch here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Telefonbuch
{
// instance variables - replace the example below with your own
private int anzahl_eintrag;
private int kapazitaet;
private String[] name_liste;
protected boolean gefunden;
/**
* Constructor for objects of class Telefonbuch
*/
public Telefonbuch()
{
// initialise instance variables
String [] name_liste = new String[kapazitaet];
gefunden = false;
}
public void set_kapazitaet(int x)
{
kapazitaet = x;
}
public void telefonbuch_uebersicht()
{
for(int i=0; i < name_liste.length; i++)
{
System.out.println(name_liste[i]);
}
}
public void hinzufuegen(String name)
{
}
public void entfernen(String name)
{
}
public boolean suchen(String name)
{
for(int i=0; i < name_liste.length; i++)
{
if(name_liste[i].equals(name))
{
gefunden = true;
}
else
{
//Abbruch
}
}
return gefunden;
}
}
2 Antworten
Du kannst die Methode hinzufuegen nur auf einem Objekt der Klasse Telefonbuch benutzen, nicht mit der Klasse Telefonbuch selbst.
Das musst du mir nochmal verständlicher schreiben.
Bedenke, dass die Klasse im Programmablauf nicht existiert. Wenn du irgendetwas darin speichern willst musst du das mit einem Objekt dieser Klasse machen. Eine Klasse selbst bekommt keinen nutzbaren Speicher.
Hmm damit ist die Frage wohl beantwortet :D
Also zu der Frage nochmal; ich wollte eine Unterklasse erstellen, die erlaubt Methoden aus Telefonbuch zu benutzen, die vom Telefon vererbt werden, wie sähe dazu der Code aus ?
Schon mal mit extends versucht?
https://www.tutorials.de/threads/methoden-anderer-klassen-zugreifen.360108/
public class Telefon extends Telefonbuch { ... }
Dann wäre ein Telefon ein spezielles Telefonbuch. Das ist etwas weit hergeholt / abstrakt.
Ja daran hab ich zuerst auch gedacht, doch soll leider keine Vererbungsbeziehung zwischen diesen beiden Klassen herrschen, trotzdem vielen Dank für die schnelle Antwort :)
Ist es denn möglich über ein erstelltes Objekt von Klasse Telefonbuch die Methoden aus dieser Klasse in die Klasse Telefon zu implementieren, also so gesagt über das Objekt einen Umweg gehen ?