Interfejsy są potrzebne czy nie ?

0

Witam, poczytalem na temat interfejsow w javie i sie zastanawiam po co tak w ogole one sa?
Mozna w nich zadeklarowac metody i stałe(wraz z przypisaniem "wartosci") ale rownie dobrze mozna to zrobic w danej klasie. Interfejsy zastepuja wielokrotne dziedziczenie ale czy to jest tak jak mysle :
jesli nie sa tylko po to zeby zastapic kilkukrotne wklepywanie tego samego kodu(tak jak mysle ,dobrze mysle ??) jak nizej to prosze o wskazowki, no i jeszcze jakby ktos mogl mi odpowiedziec co tak naprawde znaczy ze interfejsy definiuja zachowanie klasy

 
class Pierwsza implements kolo{

void zrob_cos(){
    System.out.prinf("");
    }
}

class Druga{
    interface kolo{
  zrob_cos();}
}
0

Źle myślisz :(

Interfejs służy do stworzenia jednolitego punktu dostępowego do obiektów. Innymi słowy jeżeli chcesz operować na pewnych obiektach, ale nie musisz wiedzieć co dokłądnie są to za obiekty to wykorzystujesz interfejsy. Przykład 1:

interface Figura{
    public double pole();
}

public class Koło implements Figura{
  private Double r=1;
  public double pole(){
     return new Double(Math.PI*r*r);
  }
}
public class Kwadrat implements Figura{
  private Double a=1;
  public double pole(){
     return new Double(r*r);
  }
}

public class App{
   public static void main(String[] arg){
      List<Figura> figury = new LinkedList<Figura>();
      figury.add(new Koło);
      figury.add(new Kwadrat);
      for(Figura f : figury)
        System.out.println(f.pole());
   }

}

W metodzie main można pozyskiwać różne figury, ale nie wiedzieć czy są to koła czy kwadraty. Jedyne co wiemy to to, że są to figury. Interfejs jest bardzo abstrakcyjny i opisuje tyklo możliwe czynności.

Jeżeli chcesz zaoszczędzić sobie klepania i powtarzania kodu to stosujesz w zależności od potrzeb dziedziczenie, kompozycję lub agregację.

0

Dzieki za szybka odpowiedz, rozjasnilo mi troche to co napisales. A co do oszczedzania kodu to dzieki za haselka, tzn dziedziczenie to wiem co to itd. ale nie wiedzialem gdzie sie zakrecic(w jakim temacie) zeby przy klasie ktora juz dziedziczy po jakiejs klasie zaoszczedzic kod. Jeszcze raz THX.

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