Java对于多态的理解

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

多态的前提:

    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();//使用子类中的特有功能

   

猜你喜欢

转载自blog.csdn.net/qq_41679818/article/details/80781357