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

今天和大家来说说下多态

程序员文章站 2022-03-15 19:31:19
...

首先引入一个问题,什么是多态,所谓的 多态从字面意思的理解就是多种状态.多态在我们的生活里面是到处存在的。

比如比如一个很简单的比方,就拿休息的方法来说,普通的人休息就是睡一觉,程序员休息就是ixie几行代码。等等

或出现不同的形式。多要就像一个函数,当输入不同的参数,会得到不同的结果。下面我们来看看代码来理解下什么是多态

package TestModefine;

/**
 * @author hackbase  多态的测试必须满足三个条件
 * 1.必须要又继承
 * 2.必须重写父类的方法
 * 3.父类的引用必须指向子类的对象
 * 下面我们来看看代码.
 */
public class Demo {
    public static void main(String[] args) {
        //一般动物交了一声
        Animal d=new Animal();
        AnimalShutCry(d);
        //当我们传递一个狗进去的时候,就会出现狗叫
        Animal d2=new Dog();
        AnimalShutCry(d2);
        //当我们传递一个猫进去的时候,会自动的出现猫叫的现象/
        Animal d3=new Cat();
        //自动向上转型。
        AnimalShutCry(d3);

        //向下转型.
        Dog b=(Dog)d2;
        //强制向下转型.




    }
     static   void AnimalShutCry(Animal T){
        T.shut();
    }

    static class Animal{
        public void shut(){
            System.out.println("叫了一声");
        }
    }

    static class Dog extends Animal{
        @Override
        public void shut(){
            System.out.println("汪汪汪的叫了一声.......");
        }
    }

    static class Cat extends Animal{
        @Override
        public void shut() {
            System.out.println("喵喵的叫了一声......");
        }
    }
}

上面的代码说的很i清楚,多态必须满足三个条件1.又继承的关系。2.重写了父类的方法。3.父类的引用必须指向子类的一个对象.

着三个条件却不可.  主要看看下面的代码.

 static   void AnimalShutCry(Animal T){
        T.shut();
    }

上面代码才是多态的关键,在方法的参数里面,我们定义了一个父类的引用,当我们传入不同的子类的时候JVM会根据不同的子类调用不同的方法。来看看代码输出的的结果。

public static void main(String[] args) {
        //一般动物交了一声
        Animal d=new Animal();
        AnimalShutCry(d);
        //当我们传递一个狗进去的时候,就会出现狗叫
        Animal d2=new Dog();
        AnimalShutCry(d2);
        //当我们传递一个猫进去的时候,会自动的出现猫叫的现象/
        Animal d3=new Cat();
        //自动向上转型。
        AnimalShutCry(d3);

        //向下转型.
        Dog b=(Dog)d2;
        //强制向下转型.




    }

当我们传递不同的动物进去的时候,JVM就会调用不同的方法,从而输出不同的结果。着就是多态

 

相关标签: 多态