08-02 Java语言基础(多态中向上转型和向下转型、多态的好处和弊端)
发布日期:2021-05-06 23:59:22 浏览次数:25 分类:精选文章

本文共 1757 字,大约阅读时间需要 5 分钟。

基本数据类型自动提升和强制类型转换

int i = 10;byte b = 20;i = b;        //自动类型提升b = (byte)i;  //强制类型转换

向上转型和向下转型

Person P = new SuperMan();   //向下转型SuperMan sm = (SuperMan)P;   //向上转型sm.fly()

多态

多态的好处和弊端

好处:

  • 提高代码的维护性(继承保证)(在继承的类里面改一下就好了)
  • 提高代码的扩展性(多态保证)(定义一个父类,随着子类的不同执行不同的行为)
public class Test01 {       public static void main(String[] args){           Animal cat = new Cat();        Animal dog = new Dog();//        Cat c1 = (Cat) c;//        c1.catchMouse();        method(cat);        method(dog);    }    public static void method(Animal a){           a.eat();        if(a instanceof Cat){             //instanceof  判断前面的引用是否是后面的数据类型            ((Cat) a).catchMouse();        }else if(a instanceof Dog){                 ((Dog) a).sleep();        }    }}class Animal{       public void eat(){           System.out.println("动物吃东西");    }}class Cat extends Animal{       public void eat(){           System.out.println("猫吃鱼");    }    public void catchMouse(){           System.out.println("猫捉老鼠");    }}class Dog extends Animal{       public void eat(){           System.out.println("狗吃肉");    }    public void sleep(){           System.out.println("狗睡觉");    }}

面试题

看下面的程序是否有问题:

public class Test02 {       public static void main(String[] args){           A a = new B();        a.show();     //爱        B b = new C();        b.show();     //你    }}class A {       public void show(){           show2();    }    public void show2(){           System.out.println("我");    }}class B extends A{       public void show2(){               //a.show(), 这里执行的是子类的show2()        System.out.println("爱");    }}class C extends B{       public void show(){           super.show();              //和上例一样,执行的是子类的show2()    }    public void show2(){           System.out.println("你");    }}
上一篇:08-03 Java语言基础(抽象类的概述和特点)
下一篇:08-01 Java语言基础(多态)

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2025年03月25日 02时52分13秒