наследование, расширенный цикл и массив не работают должным образом - PullRequest
0 голосов
/ 05 ноября 2019

Я пытаюсь собрать несколько вещей здесь, и это не работает правильно. Я думал, что каждый раз в цикле цикл будет обновляться и наследоваться для каждого члена класса. Вместо этого он печатает метод "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();

}
}

Может кто-нибудь помочь мне понять, что я делаю неправильно. Должен ли я делать все эти статические методы?

1 Ответ

0 голосов
/ 05 ноября 2019

Проблема в том, что метод шума в инструментальной группе является статическим. В Java статический метод не переопределяется.

Чтобы эта работа изменила сигнатуру метода шума на общедоступный шум () и то же самое в подклассах, которые переопределяют, и это работает.

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");
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...