Ja bych to popsal trochu jinak, alespon z meho pohledu jak jsem se s tim setkal, a omlouvam se za styl, javu jsem uz nejaky patek nevidel.
Rozhrani je vetsinou udelane tak ze bud dava objektu nejakou vlastnost, nebo standartizuje nejaky set funkci (vcetne vstupnich parametru a navratovych hodnot) ktere objekt musi mit aby s nim slo neco delat. Interface nepopisuje objekt co do informaci ktere uklada ale co do metod ktere obsahuje.
Dal bych za priklad tridu cislo. Ta ma rozhrani comparable, cili to rika ze trida jde s necim srovnavat. Rozhrani comparable, tak jak je definovane nekde jinde, vyzaduje, aby trida mela nekde metodu int compareTo(object input). kde bude definovane ze vraci retval<0 kdyz je cislo mensi nez parametr predany jako argument, nulu kdyz je stejne a retval>0 kdyz bude argument mensi.
Treba.
Objekt nemusi byt cislo, predstav si ze mas objekt co ma v sobe obrazek a ty muzes udelat funkci compareTo co srovna zda je obrazek tmavsi nez jinej atd atd.
Priklad s cislem :
public class Cislo implements Comparable {
double number;
public Cislo () {
numberl = 0.0;
}
public Cislo (double _number) {
number= _number;
}
public String toString() {
return number;
}
public int compareTo(Object o1)
{
if (this.number== ((Cislo) o1).number)
return 0;
else if ((this.number) > ((Cislo) o1).number)
return 1;
else
return -1;
}
}
Tehle vlastnosti muze byt hodne, napada me treba serializable, printable...
Pokud si dobre vzpominam tak v Jave muze objekt implementovat neomezene interfacu.
Abstraktni tridu si prestav jako sablonu. POZOR - abstraktni trida je tehdy, pokud v sobe ma alespon jednu abstraktni metodu. Me tohle ucili na obrazcich. Priklad >
Mas Abstrakni tridu Geometricky tvar.
Abstract class GeometrickyTvar
{
abstract int numStran; // jen promenna
abstract int draw(); // nejaka metoda
}
// no a zde se dedi :
class Trojuhelnik extends Geometricky tvar
{
int a,b,c; // strany.
}
...
...
if (trojuhelnik.numStran != 3) return "chyba"; //no a v kodu muzes pak pouzit num stran prestoze v tom trojuhelniku nikde neni
Koukam ze abstraktni tridou jsem vzal i dedicnost, takhle se rika tomu ze jedna trida se zkopiruje do druhe a prida vlastni vlastnosti.
Dedit se v jave da jen z jedne tridy, nicmene jedna trida muze mit kolik chce rozhrani. ( teda myslim, to si radsi over )
Skoukni knihu/net, uz nemam sil... snad jsem alespon trochu pomohl, GN =)