以Collection接口为例:
Collection接口有两个子接口——List接口和Set接口.
其中,ArrayList是List接口的子类.
因此,既可以用ArrayList为上一层的List接口实例化,
也可以为上上层的Collection接口实例化.
子接口肯定比父接口的方法多(因为子接口扩充了父接口的方法),
因此,实例化Collection接口所能调用的方法,肯定比实例化ArrayList接口所能调用的方法少.
package prepare1; import java.util.ArrayList; import java.util.Collection; import java.util.List; interface A{ public void func1(); public void func2(); } class B implements A{ @Override public void func1() { System.out.println("一号方法"); } @Override public void func2() { System.out.println("二号方法"); } public void func3() { System.out.println("三号方法"); } } public class Test { public static void main(String[] args) { A a = new B();//实例化接口A B b = new B();//实例化普通类B //如果实例化的是接口,则只能调用接口中的方法 a.func1(); a.func2(); //如果实例化的是类,则既可以调用父接口的方法,也可以调用自己内部定义的方法 b.func1(); b.func2(); b.func3(); } }