首页 > 代码库 > 10:上溯造型

10:上溯造型

相关代码:

 1 class a{} 2 class Hello{ 3     Hello(a example){ 4         System.out.println("yo"); 5     } 6 } 7 class aa extends a{} 8 public class SprinklerSystem {  9  public static void main(String[] args) {10      a c=new a();11      aa d=new aa();12      Hello q=new Hello(c);13      Hello w=new Hello(d);14     }15 }

    由代码可看出,Hello构造器中的标准参数为对象a,但是看第13行,a的子类b被带入到Hello构造器中也是可以成立的,这就是所谓的”上溯造型“。子类是父类的超集,它至少了父类中的所有方法,所以”上诉造型“对于父类是可行的话那么对于子类也是可行的,不过有可能在子类上溯造型的时候丢失方法(父类中没有的)。

    有上溯造型,那么就有下溯造型,虽然两者均可行,但是下溯造型的问题是要多于上溯造型的。比如说方法中使用了子类相对于父类多出的方法/变量时,使用下溯造型将父类带入到方法中就会出错。

10:上溯造型