java多态的用法,优点和缺点
今天,我们一起来学习以下多态。 先说一下
优点
提高程序扩展性
缺点
多态不能访问子类特有的功能
首先 我们先创建6个类
- cat
- dog
- pig
- ff(方法)
- dongwu(父类)
- cz(操作使用)
定义一个父类的方法
package duotai; public class dongwu { public void chi(){ System.out.println("啥都吃"); } }
子类
package duotai; public class cat extends dongwu{ //重新父类方法 @Override public void chi() { System.out.println("猫吃鱼"); } }
package duotai; public class dog extends dongwu{ @Override public void chi() { System.out.println("吃骨头"); } public void zy(){ System.out.println("看大门"); } }
package duotai; public class pig extends dongwu{ @Override public void chi() { System.out.println("猪吃青菜"); } }
第一种写法 不方便 可读性低
package duotai; public class cz { //定义一个操作类 public void chi(cat x){ // cat x=new cat(); //这个方法里需要猫类型的对象 x.chi(); } public void chi(dog z){ // dog z=new dog(); z.chi(); }
第二种
public void chi(dongwu a){ //以父类动物为参数 a.chi(); //dongwu a=new cat() //dongwu a=new dog() //dongwu a=new pig() // a.zy(); 不能访问子类特有的功能 }
首先创建cz类的对象 在cz类的chi方法中 需要一个变量进行传递。以c创建实例对象猫的时候,c就成了一个实例。 在cz类的方法中缺少一个动物的变量, 所以直接以cz类的对象名去调用chi方法+(实例对象) 就可以输出对应的方法输出语句
package duotai; public class ff { public static void main(String[] args) { cz z=new cz(); //创建操作对象 cat c=new cat(); //创建猫的对象 z.chi(c); //把猫的对象传递到方法里 dog v=new dog(); z.chi(v); //创建狗的对象 pig b=new pig(); z.chi(b); } }