java中向上转型和向下转型浅析

「爱情、让人受尽委屈。」 2022-04-14 20:49 303阅读 0赞

基础概念

向上转型就是子类对象被父类引用,例如动物和小鸟的关系,小鸟属于动物,动物不仅仅只包含小鸟,还包含猫和狗等,例如:

Animal birdAnimal = new Bird();这种方式就是向上转型,代码如下:

  1. class Animal
  2. {
  3. public void run()
  4. {
  5. System.out.println("父类的animal running...");
  6. }
  7. }
  8. class Bird extends Animal
  9. {
  10. @Override
  11. public void run()
  12. {
  13. System.out.println("子类小鸟在 running...");
  14. }
  15. public void fly()
  16. {
  17. System.out.println("子类小鸟在 flying...");
  18. }
  19. }
  20. public class Test
  21. {
  22. public static void main(String[] args)
  23. {
  24. Animal b=new Bird(); //向上转型
  25. b.run();
  26. // b.fly(); b虽指向子类对象,但因为向上转型而失去了fly()方法
  27. }
  28. }

上面代码是向上转型的例子,输出结果是run方法的:子类小鸟在 running… ,对于子类b的fly()方法会因为向上转型而丢失。

向下转型:向下转型是子类对象被父类引用之后,再把父类引用强转成子类,强转时叫做向下转型。

例子:

  1. public class Test {
  2. public static void main(String[] args) {
  3. Animal b = new Bird();
  4. b.run();
  5. // b.fly();//向上
  6. Bird bird = (Bird)b;//向下转型
  7. bird.run();
  8. bird.fly();
  9. }
  10. }
  11. 输出结果:
  12. 子类小鸟在 running...
  13. 子类小鸟在 running...
  14. 子类小鸟在 flying...

向下转型意义:当多个子类继承同一个父类或接口时,可以写一个公用的方法,方法传入的形参为父类或接口,这样每个子类实参就可以传入这个父类形参中,进而实现公用性。例如:

  1. public class Test {
  2. public static void main(String[] args) {
  3. Bird b1 = new Bird();
  4. Tom tom = new Tom();
  5. sleep(b1);//传入的是子类实参引用
  6. sleep(tom);//传入的是子类实参引用
  7. }
  8. public static void sleep(Animal A) //方法的参数是父类!!
  9. {
  10. A.run();
  11. }
  12. }
  13. 输出结果:
  14. 子类小鸟在 running...
  15. 子类tom猫在 running...

发表评论

表情:
评论列表 (有 0 条评论,303人围观)

还没有评论,来说两句吧...

相关阅读

    相关 java向上转型转型

    1、java的向上转型 概念:定义一个父类的引用变量来指向一个子类的对象。 该引用变量可以调用父类中定义的属性和方法,对于非静态方法,如果子类中重写了该方法,则会引

    相关 Java转型(向上转型)

    在Java编程中经常碰到类型转换,对象类型转换主要包括向上转型和向下转型。 5.13.1 向上转型 我们在现实中常常这样说:这个人会唱歌。在这里,我们并不关心这个人是黑