java多态的用法,优点和缺点

今天,我们一起来学习以下多态。 先说一下

优点

提高程序扩展性

缺点

多态不能访问子类特有的功能

首先 我们先创建6个类

  1. cat
  2. dog
  3. pig
  4. ff(方法)
  5. dongwu(父类)
  6. 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);
    }
}
经验分享 程序员 微信小程序 职场和发展