package com.company;
interface Animal{
    void shout();
}
class Cat implements Animal{
    public void shout(){
        System.out.println("喵喵喵");
    }
    public void sleep(){
        System.out.println("猫咪要睡觉");
    }
}
class Dog implements Animal{
    public void shout(){
        System.out.println("汪汪汪");
    }
    void sleep(){
        System.out.println("狗狗要睡觉");
    }
}
public class 静态类 {
    public static void main(String[] agrs){
        Cat cat = new Cat();
        Animal dog = new Dog();
        animalShout(cat);
        animalShout(dog);
    }
    public static void animalShout(Animal animal){
        if (animal instanceof Cat){
            Cat cat =(Cat) animal;
            cat.shout();
            cat.sleep();
        }else {
            Dog dog = (Dog) animal;
            dog.shout();
            dog.sleep();
        }


    }
}

多态就是将不同类的相同对象,做成一个固定的对象然后引入不同的实例对象得到的不同的结果。

代码详解:
首先创建了Animal接口里面有一个抽象的shout对象
定义了两个类(dog cat)引用了Animal接口。
dog和cat类分别使用了父类Animal的shout对象,又自己创建了一个sleep对象。
主函数创建了一个 公共 静态的animalShout方法里面 用instanceof判断了一下,如果是猫类,那么将会将传参强行转为猫类,如果是狗就是转为狗类。
这里说一下为什么要判断 为什么要创建实例:
如果不创建实例的话虽然能调用接口父类的shout();,但是不能调用子类独有的sleep()方法。
判断的话是用来判断传参入的是什么类好可以,创建什么实例。