|
| Hvad output giver programmet, og hvorfor ~ Fra : Soren Kuula |
Dato : 24-02-05 17:13 |
|
(bare for sjov)
public class VisitorExperiment {
private interface Visitor {
void visit (A a);
}
private interface ExtendedVisitor extends Visitor {
void visit (B b);
}
private static class ExtendedVisitorImpl implements ExtendedVisitor {
public void visit (A a){
System.out.println("smutter");
}
public void visit(B b) {
System.out.println("træffer");
}
}
private static class A{
public void accept(Visitor vis){vis.visit(this);}
}
private static class B extends A{
public void accept(ExtendedVisitor vis){vis.visit(this);}
}
public static void main (String[] args) {
B b = new B();
ExtendedVisitor ev = new ExtendedVisitorImpl();
b.accept(ev);
Visitor v = ev;
b.accept(v);
A a = b;
a.accept(ev);
a.accept(v);
}
}
MVH
Søren
| |
Christian Holm (24-02-2005)
| Kommentar Fra : Christian Holm |
Dato : 24-02-05 19:11 |
|
træffer
smutter
smutter
smutter
Så længe man husker at metode-valg ved overloading bliver afgjort ved
compile-time, så burde det være let nok at afgøre outputtet.
Christian
| |
Henrik Davidsen (24-02-2005)
| Kommentar Fra : Henrik Davidsen |
Dato : 24-02-05 21:11 |
|
> træffer
> smutter
> smutter
> smutter
Det kom jeg også frem til... Men det var sgu svært at følge med i koden,
mens jeg telefonerede med min gamle moder
/Sjang
| |
|
|