继承,增强的循环和arraylist无法正常运行

我正在尝试将一些内容放在一起,但无法正常工作。我认为每次循环时,循环都会为每个类成员更新和继承。相反,它将打印“ member”方法4次。

import java.util.ArrayList;

public class toolband
{
    public static void noise()
    {
        System.out.println("abc");
    }

static class member extends toolband
{

    public static void noise()
    {
        System.out.println("xyz");
    }
}

static class maynard extends member
{
String namemaynard = "maynard";

public static void noise() 
    {
        System.out.println("pow pow");
    }
}

static class adam extends member
{
    String nameadam = "adam";
    public static void noise() 
    {
        System.out.println("da dun da dun");
    }
}
static class danny extends member
{
    String namedanny = "danny";
    public static void noise()
    {
        System.out.println("smash smash smash");
    }
}
static class justin extends member
{
    String namejustin = "justin";
    public static void noise()
    {
        System.out.println("womp wa wa wo wo womp");
    }
}

public static void main (String [] args)
{
ArrayList <member> members = new ArrayList <member> (4);

member m = new maynard();
member a = new adam();
member d = new danny();
member j = new justin();

members.add(m);
members.add(a);
members.add(d);
members.add(j);

for (member i : members)
i.noise();

}
}

有人可以帮助我了解我在做什么错误。我应该使用所有这些静态方法吗?

studio2079 回答:继承,增强的循环和arraylist无法正常运行

问题在于工具栏中的噪声方法是静态的。在Java中,静态方法没有被覆盖。

要使这项工作将噪声方法签名更改为public void noise(),并且在重写的子类中将其更改为有效。

public class toolband {
    public void noise() {
        System.out.println("abc");
    }
}

class member extends toolband {

    public void noise() {
        System.out.println("xyz");
    }
}

class maynard extends member {
    String namemaynard = "maynard";

    public void noise() {
        System.out.println("pow pow");
    }
}

class adam extends member {
    String nameadam = "adam";

    public void noise() {
        System.out.println("da dun da dun");
    }
}

class danny extends member {
    String namedanny = "danny";

    public void noise() {
        System.out.println("smash smash smash");
    }
}

class justin extends member {
    String namejustin = "justin";

    public void noise() {
        System.out.println("womp wa wa wo wo womp");
    }

}
本文链接:https://www.f2er.com/3161636.html

大家都在问