Nema smisla da upetljavas interfejse u ovo. Ja ti predlazem da sve radis preko apstraktnih klasa. Napravis apstraktnu klasu Vehicele, tu gurnes sve stvari koje su bitne za sva vozila. Zatim napravis njenu podklasu Car, sa svim bitnim karakteristikama automobila. Iz nje izvuces klasu Bmw koja sadrzi bitne karakteristike bmv automobila, i na kraju napravis klasu BmvX5M koja je jedina neapstraktna. Ovakva hijerarhija ti je mnogo pogodnija za ovaj problem nego da uvozis interfejse.
Code:
public abstract class Vehicle{
// bitne karakteristike vazne za sva vozila i odgovarajuci metodi
}
public abstract class Car extends Vehicle{
// bitne karakteristike za automobile, npr vrsta motora ili broj vrata
}
public abstract class Bmw extends Car{
// bitne karakteristike za Bmv-ove
}
public class BmwX5M extends Bmw{
// konkretne karakteristike ovog modela
}
Druga stvar je ukoliko zelis da cijelu hijerarhiju razvijes malo vise, pa da onda imas recimo i motore(dvotockase npr),i da koristis prednosti dinamickog vezivanja i "visestrukog nasledjivanja" kojeg java direktno ne podrzava. Npr situacija je da imas servis koji prima samo BMW vozila, i to motore i automobile. Onda bi morao da uradis nesto ovako.
Code:
public abstract class Vehicle{
// bitne karakteristike vazne za sva vozila i odgovarajuci metodi
}
public interface IBmw{
// neki metodi koji ce biti potrebni servisu za bmw vozila
}
public abstract class Car extends Vehicle{
// bitne karakteristike za automobile, npr vrsta motora ili broj vrata
}
public abstract class BmwCar extends Car implements IBmw{
// bitne karakteristike za Bmv-ove automobile
}
public class BmwX5M extends BmwCar{
// konkretne karakteristike ovog modela
}
a sa druge strane
Code:
public abstract class MotorBike extends Vehicle{
// bitne karakteristike za motore
}
public abstract class BmwMotorBike extends MotorBike implements IBmw{
// bitne karakteristike za Bmv-ove motore
}
public class BmwConcreteBike extends BmwMotorBike{
// konkretne karakteristike ovog modela
}
I sada servis moze da prima i BmwCar i BmwMotorBike bez razlike.
Znaci ideja je da interfejse uvodis kada ti abstraktne klase ne mogu pomoci, tj kada trebas da nasledis dvije ili vise stvari. Apstraktne klase su bolje zato sto mogu da sadrze polja i neke implementirane metode.
[Ovu poruku je menjao blekmor dana 24.06.2013. u 00:30 GMT+1]
[Ovu poruku je menjao blekmor dana 24.06.2013. u 00:31 GMT+1]