1,必须在同一个类中以某种方式实现2个接口?
public class Linkin implements A,B{ @Override public void testB() { } @Override public void testA() { } } interface A{ public void testA(); } interface B{ public void testB(); }
public class Linkin implements A{ //定义一个方法,返回一个实现了B的匿名内部类,去实现B B makeB(){ return new B(){ @Override public void test() { System.out.println("实现接口B..."); } }; } //这里是外部类,直接实现了接口A @Override public void test() { System.out.println("实现接口A..."); } } interface A{ public void test(); } interface B{ public void test(); }
public class Linkin extends A{ //使用内部类,可以很好实现多继承 B makeB(){ return new B(){ @Override public void test() { System.out.println("这里来实现下面那个抽象类B的方法。。。"); } }; } } class A{ public void test(){ System.out.println("这里是A类的一个方法。。。"); } } abstract class B{ abstract public void test(); }
public class Linkin extends A implements Binger{ @Override public void test(){ System.out.println("这里是B类的一个方法。。。"); } public static void main(String[] args) { Linkin linkin = new Linkin(); linkin.test(); } } class A{ public void test(){ System.out.println("这里是A类的一个方法。。。"); } } interface Binger{ //以后再写接口的时候,就不要再罗里吧嗦的写什么public了 默认都是public abstract的 void test(); }
public class Linkin extends A { public Binger getBinger(){ return new Binger(){ @Override public void test() { System.out.println("这里是B接口的实现。。。"); } }; } public static void main(String[] args) { Linkin linkin = new Linkin(); linkin.test(); linkin.getBinger().test(); } } class A{ public void test(){ System.out.println("这里是A类的一个方法。。。"); } } interface Binger{ //以后再写接口的时候,就不要再罗里吧嗦的写什么public了 默认都是public abstract的 void test(); }
/** * * @version 1L * @author LinkinPark * @since 2014-11-6 * @motto 梦似烟花心似水,同学少年不言情 * @desc ^现在的代码就有点NB了,我们既可以直接使用外部类2个不同名的方法,来调用A和BInger里面那2个方法,又可以调用一个方法,得到内部类,使用同名的方法 */ public class Linkin extends A { //A类里面的Test方法通过继承得到 //这里的这个方法其实就是接口Binger的Test实现方法 public void otherTest(){ System.out.println("这里是B接口的实现。。。"); } private class BingerImpl implements Binger{ @Override public void test() { otherTest(); } } //这里返回上面那个内部类的引用,在以后使用的时候就不用来每次new内部类了 public Binger getBinger(){ return new BingerImpl(); } public static void main(String[] args) { Linkin linkin = new Linkin(); linkin.test(); //下面2行代码功能一样 linkin.otherTest(); linkin.getBinger().test(); } } class A{ public void test(){ System.out.println("这里是A类的一个方法。。。"); } } interface Binger{ //以后再写接口的时候,就不要再罗里吧嗦的写什么public了 默认都是public abstract的 void test(); }