我想我已经开始理解这个主题,但是还不是很完整。有人可以在这个例子中向我解释:

public class Solution
{
    public static void main(String[] args)
    {
        Cow cow = new Whale();

        System.out.println(cow.getName());
    }

    public static class Cow
    {
        public String getName()
        {
            return "Im cow";
        }
    }

    public static class Whale extends Cow
    {
        public String getName() {
            return "Im whale";
        }
    }
}

什么时候叫这有什么区别:
Cow cow = new Whale();
System.out.println(cow.getName());

和这个:
Whale whale = new Whale();

System.out.println(whale.getName());

我将具有相同的输出,但是在什么情况下或什么时候应该调用Cow类的方法以及何时形成Whale类。
对不起,如果我给出了太愚蠢或太简单的例子。我希望你能理解我想说的话。
提前致谢。

最佳答案

了解多态性是个好问题。我不确定鲸鱼是否应该扩展Cow;),但是我可以向您展示一些不同的结构:

public class Solution {
    public static void main(String[] args) {
        Animal animal1 = new Cow();
        Animal animal2 = new Whale();

        ArrayList<Animal> myAnimals = new ArrayList<Animal>();
        myAnimals.add(animal1);
        myAnimals.add(animal2);
        //show all my animals
        for (Animal animal : arrayList) {
            System.out.println(animal.getName());

        }


    }


    public static class Animal {
        public String getName() {
            return "Im general animal";
        }
    }

    public static class Cow extends Animal {
        public String getName() {
            return "Im cow";
        }
    }

    public static class Whale extends Animal {
        public String getName() {
            return "Im whale";
        }
    }
}

在上面的示例中,我创建了Animal类,该类由Cow and Whale扩展。我可以创建我的动物列表并显示它们的名称。
在您的示例中,为Cow Cow = new Whale();创建对象没有区别。和鲸鱼鲸鱼= new Whale();
你清楚吗?

09-26 09:57