欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java对于多态的理解

程序员文章站 2022-05-06 17:51:50
...

多态:同一个事物,在不同时刻体现的不同状态。

多态的前提:

    1.要有继承关系

    2.要有方法重写。

    3.要有父类引用指向子类对象。

    父 f=new 子();

class Fu{
   public int num=100;
   public void show(){
   System.out.printIn("show fu");
   }
}
class Zi extends Fu{
     public int num=1000;
     public void show(){
   System.out.printIn("show zi");
   }
     public void method(){
     System.out.printIn("method zi");
   }
}
class Test{
    public static void main(String []args){
    Fu f=new Zi();
    System.out.printIn(f.num);/   }}

访问特点:

成员变量:编译看左边,运行看左边。

成员方法:编译看左边,运行看右边。

构造方法:创建子类对象时,访问父类的构造方法,对父类的数据进行初始化。

多态的好处:

     1.提高代码的维护性

     2.提高代码的扩展性

class Animals{
   public void eat(){
      System.out.printIn("eat");
   }
   public void sleep(){
      System.out.printIn("sleep");
   }
}
class Dog extends Animals{
    public void eat(){
       System.out.printIn("狗吃骨头");
   }
    public void sleep(){
      System.out.printIn("狗站着睡觉");
   }
}
class Cat extends Animals{
    public void eat(){
       System.out.printIn("猫吃鱼");
   }
    public void sleep(){
      System.out.printIn("猫躺着睡觉");
   }
} 
//动物工具类,可以适用任何动物
class AnimalsTool{
    public static void useAnimals(Animals c){
    c.eat();
    c.sleep();
    }
 }   
class Test{
    public static void main(String[]args) 
    {
    Cat c=new Cat();
    Dog d=new Dog();
    AnimalsTool.useAnimals(c);
    AnimalsTool.useAnimals(d);
    }
}
    
         

多态的弊端:

      不能使用子类中的特有功能。(可以使用向下转型的方法)

Fu f=new Zi();
f.show();
Zi z=(Zi)f;
z.show();
z.method();//使用子类中的特有功能