#java #oop #inheritance
#java #ооп #наследование
Вопрос:
Я создаю свой первый ООП-проект, и у меня есть вопрос. У меня есть два класса, которые называются Music
и Game
которые являются подклассами моего суперкласса Disc
. Этот суперкласс имеет следующие переменные-члены:
private String title;
private String[] genre;
private String releaseDate;
Я хочу, чтобы мои подклассы наследовали эти переменные, а затем определяли свои собственные уникальные переменные -члены, и мне удалось успешно это сделать, за исключением genre
. Я хочу, чтобы значения для жанров были разными для Music
и Game
, но я не понимаю, как бы я это сделал.
Это мои области для Музыки:
private String artist;
private int noOfSongs;
private float duration;
Поля для игры:
private int[] PEGIRating
private String platform;
Использую ли я методы установки в подклассах для определения значений?
Game
Класс также имеет массив оценок PEGI в качестве переменной. Если класс имеет поле-член, представляющее собой массив или список, где должны быть объявлены значения для этого списка и как получить к нему доступ из другого класса?
Спасибо
Комментарии:
1. Принципы объектно-ориентированного программирования , которые являются частью руководств Oracle по Java.
2.Я бы добавил 2 перечисления
SongGenre
иGameGenre
для жанров песен и игровых жанров соответственно. Таким образом, у вас есть четко определенный набор жанров для каждого типа, который будет поддерживать ваша абстракция. Это лучше, чем необработанныйString[]
массив.enum SongGenre { POP, ROCK; }
enum GameGenre { SHOOTER, STELTH; }
Disc
это довольно абстрактная сущность,Disc#getGenres()
не имеет особого смысла, потому что жанры музыки, игр, фильмов сильно отличаются друг от друга.
Ответ №1:
Вы можете создавать методы установки и получения ваших родительских и дочерних классов. Создайте конструктор класса для установки значений и используйте super(title, genre, ReleaseDate) в подклассах для установки значений родительского класса.
Если класс имеет поле-член, представляющее собой массив или список, где должны быть объявлены значения для этого списка и как получить к нему доступ из другого класса?
Вы можете создать свой список в своем основном методе и задать его при создании объекта класса в основном методе. Метод setters и getters, используемый для доступа к переменным из другого класса.