List是一个接口,而ArrayList是List接口的一个实现类。
ArrayList类继承并实现了List接口。
因此,List接口不能被构造,也就是我们说的不能创建实例对象,但是我们可以像下面那样为List接口创建一个指
向自己的对象引用,而ArrayList实现类的实例对象就在这充当了这个指向List接口的对象引用。
public class Test{
public static void main(String[] args){
Animal a1 = new Dog();
a1.shout();//编译通过
//a1.guard();//编译出错
}
}
abstract class Animal{
//动物名字
String name;
//动物叫声
public void shout(){
System.out.println("叫声...");
}
}
class Dog extends Animal{
//狗类独有的方法
public void guard(){
System.out.println("狗有看门的独特本领!");
}
}
如果我们创建的是抽象类的对象引用,那么这个对象只能调用自己的非抽象方法,下面的
是shout()方法,不能调用继承它的子类的独有的方法,在下面的就是guard()方法不能被a1调用,继续测试代码: