Унаследованные массивы с разными значениями Java

#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, используемый для доступа к переменным из другого класса.