
(图来自wiki)
public interface EndPlace { void to(); } public class EndPlaceA implements EndPlace { @Override public void to() { System.out.println("去A"); } } public class EndPlaceB implements EndPlace { @Override public void to() { System.out.println("去B"); } } public abstract class StartPlace { EndPlace endPlace; protected StartPlace(EndPlace endPlace){ this.endPlace = endPlace; } abstract void from(); } public class StartPlaceA extends StartPlace { public StartPlaceA(EndPlace endPlace){ super(endPlace); } @Override void from() { System.out.println("来自A"); } } public class StartPlaceB extends StartPlace { protected StartPlaceB(EndPlace endPlace) { super(endPlace); } @Override void from() { System.out.println("来自B"); } } public class Client { public static void main(String[] args){ StartPlace sa = new StartPlaceA(new EndPlaceB()); sa.from(); sa.endPlace.to(); sa = new StartPlaceA(new EndPlaceA()); sa.from(); sa.endPlace.to(); StartPlace sb = new StartPlaceB(new EndPlaceB()); sb.from(); sb.endPlace.to(); sb = new StartPlaceB(new EndPlaceA()); sb.from(); sb.endPlace.to(); } }

原文:https://www.cnblogs.com/camcay/p/12376478.html