相关代码:
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构造器中也是可以成立的,这就是所谓的”上溯造型“。子类是父类的超集,它至少了父类中的所有方法,所以”上诉造型“对于父类是可行的话那么对于子类也是可行的,不过有可能在子类上溯造型的时候丢失方法(父类中没有的)。
有上溯造型,那么就有下溯造型,虽然两者均可行,但是下溯造型的问题是要多于上溯造型的。比如说方法中使用了子类相对于父类多出的方法/变量时,使用下溯造型将父类带入到方法中就会出错。
时间: 2024-10-11 15:35:27