В чем разница между приватным полем в абстрактном суперклассе и приватным полем в неабстрактном суперклассе? - PullRequest
0 голосов
/ 06 октября 2018
public abstract class PlayableItem{
    private int duration;
    protected PlayableItem(int duration){
    this.duration = duration;
    }

    //getters and setters 

    public abstract String play();


public Song extends PlayableItem(){
    private String name = name;
    private String title = title;

    protected Song(int duration, String name, String title){
        super(duration);
        this.name = name;
        this.title = title;
    }

    //getters and setters 

    @Override
    public String play(){
    return "artist name - " + name + "song title - " + title + "duration - "
            + duration;
    }

По какой-то причине я продолжаю получать сообщение об ошибке в методе Override, особенно в отношении продолжительности.Но мой профессор хочет, чтобы я оставил приватное поле int в абстрактном классе.Все уроки, которые мы проводили на абстрактных классах, использовали закрытые поля, но никогда не использовались как часть параметра в подклассах.Я не могу не думать, что мы упустили что-то очень важное во время наших уроков, потому что ясно, что поля в абстрактном классе обрабатываются иначе, чем обычные поля суперкласса.

А именно, в обычном суперклассе Animals с закрытым типом поля String

public class Animals{
    private String type;

    public Animals(String type){
         this.type = type;
    }
 }

public class Pet extends Animals{
    private String color;

    public Pet(String type, String color){
        super(type);
        this.color = color;
    }
 }

при создании объекта Pet необходимо использовать параметр класса Parent, но для абстрактных классов онкажется другим.Может кто-нибудь объяснить?

...