Ne nemůžete. Ne, že by to nešlo. Ale míjí se to s principem OOP.
Z názvů jsem nabyl dojmu, že se snažíte vytvořit z algoritmu vytvořit
datovou strukturu.
Spíš by to mělo být
public interface Moveable
{
public static void move();
}
a pak Book i Pencil by a) muzou by Hnutlné (Moveable)
Tj. to dělá přesně to o co se snažíte, ale zvažte:
Dá se Objectem o pohnout?
if(o instanceof Moveable)
((Moveable)o).move();
Ale taky by jste chtěl aby kniha nevěděla o tom, že se s ní dá hýbat,
nebo nechcete hýbat se všemi knihami a tužkami. Použití je dekorátor
tj.:
BookMover implements Moveable
{
private Book book;
public BookMover(Book book) { this.book = book; }
public void move() { } //!
}
A pak tedy například (kdyby se říkalo v move odkud kam)
interface Container { ... vloz(Moveable m); odstran(Moveable m); }
class Stul implements Container
class Batoh implements Container
class Book // Pozor ne implements Moveable
class Pencil // Pozor ne implements Moveable
class BookMover implements Moveable
class PencilMover implements Moveable
BookMover implements Moveable {
public void move(Container source, Container target)
{
source.odstran(this.book);
target.vloz(this.book);
}
}
a ted kdyz si dam knihu ze stolu do batohu:
Stul stul = new Stul( Drevo.BUK, ...);
Batoh batoh = new Batoh ( Color.BLUE, ...);
Book book = new Book("Povidky z jedne kapsy");
BookMover bookMover = new BookMover(book);
bookMover.move(stul, batoh);
BookMover se rika dekorator tridy Book a vsimne te si, ze obohacuje
objekt dynamicky tj. na urovni instance.
Tak asi tak,
Karel
> >> ------------------------------------------
> >> Mohu nějak k této třídě napsat rozhranní, tak aby používalo přetížené
> >> metody?
> >>
> >> Něco takového?
> >> public interface Algorithm {
> >>
> >> public void move(Object o);
> >>
> >> }