为什么要向下转型? 答:因为子类的有些方法父类没有,要调用子类的方法就得用向下转型,这个过程是强制的。而向上转型却是默认的(如:Animal a = new Cat();),其实是让方法的范围变小了,有些子类的方法就没有了。所以虽然list是collection的子接口,collection本身却没有list的一些api方法。
如果Dog d=(Dog)c;d.lookhome();会发生类型转换异常。这时候应该进行判断,if(c instanceof Dog){Dog d=(Dog)c;d.lookhome();}就是判断c这个对象是不是Dog类型的,是就得到true,然后执行操作。
父类可以理解成是其所有子类的并集,而接口可以理解为实现类的规范,你必须去实现的东西,主要理解接口的抽象方法即可。 接口是方法的集合,主要封装了方法。接口支持多继承。一个类能同时继承一个父类并有多个实现。可以将接口理解做一个公共规范标准(像插座)
例:class 类名 [extends 父类名] implements 接口名1,接口名2,接口名3… {}。