Я пытаюсь создать программу, которая поможет мне узнать Наследование с Java. Однако в этом процессе я обнаружил проблему с тем, что, как мне показалось, я выучил.
Программа проста. У меня есть суперкласс под названием Gun и подкласс под названием M1911 . Идея этой программы состоит в том, чтобы просто показать мне, что вам не нужно повторять методы, подобные тому, который я сделал тоже, который называется shoot()
. Однако здесь есть проблема. Я хотел, чтобы shoot()
распечатал сообщение на консоль со словами
"GunModel: Pew, pew!"
. GunModel и shoot()
определены в Gun и подклассе M1911, чтобы иметь значение, отличное от начального значения, унаследованного от Gun . Это будет означать, что если M1911 имеет GunModel == "M1911", метод shoot()
будет отражать это, печатая
"M1911: Pew, pew!"
, что все (очевидно?) Не работает, потому что мне кажется, что значение внутри подкласса не влияет на унаследованные методы. Итак, почему это так, если правда. Кроме того, какую Цели наследования я упускаю? Кажется, это больше, чем просто избегать повторения.
Редактировать: Вот мой код, который я должен был дать первым.
public class Gun {
protected String GunModel;
public void shoot() {
System.out.println(GunModel + ": Pew, pew!");
}
}
public class M1911 extends Gun {
public String GunModel = "M1911";
}