jak uzywać interfejs

0

o co chodzi z tymi interfejsami ?
mam taki kod z ksiażki o javie:

public interface Series { 
  int getNext(); // return next number in series 
  void reset(); // restart 
  void setStart(int x); // set starting value 
}

// Implement Series. 
class ByTwos implements Series { 
  int start; 
  int val; 
 
  ByTwos() { 
    start = 0; 
    val = 0; 
  }  
 
  public int getNext() { 
    val += 2; 
    return val; 
  } 
 
  public void reset() { 
    start = 0; 
    val = 0; 
  } 
 
  public void setStart(int x) { 
    start = x; 
    val = x; 
  } 
}

class SeriesDemo { 
  public static void main(String args[]) { 
    ByTwos ob = new ByTwos(); 
 
    for(int i=0; i < 5; i++) 
      System.out.println("Next value is " + 
                         ob.getNext()); 
 
    System.out.println("\nResetting"); 
    ob.reset(); 
    for(int i=0; i < 5; i++) 
      System.out.println("Next value is " + 
                         ob.getNext()); 
 
    System.out.println("\nStarting at 100"); 
    ob.setStart(100); 
    for(int i=0; i < 5; i++) 
      System.out.println("Next value is " + 
                         ob.getNext()); 
  } 
}

nie daje sie skompiować, co z robić żeby zadziało jesli ktoś wie jak poprawić ten kod to prosze o poprawienie
bo nie rozumiem tego

0

Napisz jakie bledy wyskakuja przy kompilowaniu.

0

W tym kodzie źródłowym nie ma żadnych błędów (sprawdziłem - kompiluje się bez problemu).

Pamiętaj, że plik z kodem źródłowym powinien się nazywać dokładnie tak samo, jak publiczna klasa - o ile taka występuje (i że w jednym pliku może się znajdować tylko jedna klasa publiczna). Tak więc powinieneś nazwać swój plik z kodem źródłowym Series.java ponieważ tak właśnie nazywa się jedyna publiczna klasa (a dokładniej rzecz biorąc interfejs) w twoim kodzie źródłowym.

Tak więc, żeby przetestować ten kod, zapisz go w pliku o nazwie Series.java, następnie skompiluj poleceniem javac Series.java. Powinny się utworzyć trzy pliki: ByTwos.class, Series.class oraz SeriesDemo.class. Żeby odpalić ten trzeci, wystarczy, że wpiszesz java SeriesDemo (bez żadnego rozszerzenia - argumentem polecenia java jest nazwa klasy, a nie pliku!)

0
johny_bravo napisał(a)

Napisz jakie bledy wyskakuja przy kompilowaniu.

"C:\Program Files\Xinox Software\JCreator LE\MyProjects\SeriesDemo.java class Series is public, should be declared in a file named Series.java
public interface Series {
^
1 error"

nie sie nie kompiluje

0

przepraszam za kłopot już działa

0

nie widze jaką funkce pełni w tym programie interfejs Series bo w main tworzy sie obiekt ByTwos, skoro interfejs jest jak klasa abstrakcyjna to powinno sie uzyskoiwać dostęp do metod przez interfejs

0

Jedna z zasad dobrego programowania mowi - uzalezniaj obiekt od abstrakcji, nie od implementacji. Interfejs jest wlasnie ta abstrakcja.
spojrz na ten przyklad:
przypuscmy ze tworzysz sobie klase hmm Sniadanie (glodny jestem ;) ) ktora ma metody takie jak przygotuj, zjedz itp

teraz w swoim programie tworzysz Sniadanie s=new Sniadanie()
i np ze czterdziesci razy uzywasz w kodzie s.zrobCos(), albo jeszcze gorzej jesli masz metody statyczne to Sniadanie.metodaS()

nagle wpadles na pomysl, ze chcesz tez miec klase Obiad i co robisz? zamieniasz wszystkie linijki gdzie odnosisz sie do Sniadania. a gdyby tak stworzyc interfejs posilek? wtedy zmiana posilku moglaby sie odbywac w czasie dzialania programu a nie w czasie kompilacji! np. przy uzyciu metody zmienPosilek(Posilek p)

teraz wszystko co musisz zrobic, to
Posilek p=new Sniadanie();

wykozystanie interfejsow pozwala Ci takze budowac bardziej uniwersalne metody takie jak zmienPosilek
mam nadzieje, ze Ci sie przyda

pozdrawiam

0

Jedna z zasad dobrego programowania mowi - uzalezniaj obiekt od abstrakcji, nie od implementacji. Interfejs jest wlasnie ta abstrakcja.
spojrz na ten przyklad:
przypuscmy ze tworzysz sobie klase hmm Sniadanie (glodny jestem ;) ) ktora ma metody takie jak przygotuj, zjedz itp

teraz w swoim programie tworzysz Sniadanie s=new Sniadanie()
i np ze czterdziesci razy uzywasz w kodzie s.zrobCos(), albo jeszcze gorzej jesli masz metody statyczne to Sniadanie.metodaS()

nagle wpadles na pomysl, ze chcesz tez miec klase Obiad i co robisz? zamieniasz wszystkie linijki gdzie odnosisz sie do Sniadania. a gdyby tak stworzyc interfejs posilek? wtedy zmiana posilku moglaby sie odbywac w czasie dzialania programu a nie w czasie kompilacji! np. przy uzyciu metody zmienPosilek(Posilek p)

teraz wszystko co musisz zrobic, to
Posilek p=new Sniadanie();

wykozystanie interfejsow pozwala Ci takze budowac bardziej uniwersalne metody takie jak zmienPosilek
mam nadzieje, ze Ci sie przyda

pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1