Может сделать только один расширенный класс в Java, остальные должны быть в собственном файле - PullRequest
0 голосов
/ 24 апреля 2018

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

вот код:

abstract public class Vardesaker 
{
private String name;
double value;

public Vardesaker(String name, double value)
{
    this.name = name;
    this.value = value;
}

public String getName()
{
    return name;
}

 abstract public double getValue();
}

class Smycken extends Vardesaker
{
    private int adelstenar;
    private String material;
    public Smycken(String name, double value, int adelstenar, String material)
{
    super(name, 0);
    this.adelstenar = adelstenar;
    this.material = material;
}

public int getadelstenar()
{
    return adelstenar;
}

public String getMaterial()
{
    return material;
}

public double getValue()
{
    if(material.equalsIgnoreCase("guld"))
    {
        double sum = 2000 + (500*adelstenar);
        value = sum*1.25;
    }
    else
    {
        double sum = 700 + (500*adelstenar);
        value = sum*1.25;
    }
    return value;


    }
}


public class Aktier extends Vardesaker
{
    private double kurs;
    private int amount;

    public Aktier (String name, double value, int amount, double kurs)
    {
        super(name, 0);
        this.kurs = kurs;
        this.amount = amount;
    }

    public double getKurs()
    {
        return kurs;
    }

    public int getAmount()
    {
        return amount;
    }

    public double getValue()
    {
        double sum = (int) (amount*kurs);
        value = sum*1.25;

        return value;
    }


}

public class Apparater extends Vardesaker
{
    private double price;
    private int slitage;

    public Apparater(String name, double value, double price, int slitage)
    {
        super(name, 0);
        this.price = price;
        this.slitage = slitage;
    }

    public double getPrice()
    {
        return price;
    }

    public int getSlitage()
    {
        return slitage;
    }

    public double getValue()
    {
        double sum = price*(slitage/10);
        value = sum*1.25;

        return value;
    }
}

Ответы [ 2 ]

0 голосов
/ 24 апреля 2018

Существует простое правило - 1 открытый тип (класс, интерфейс, перечисление) = 1 Java-файл

0 голосов
/ 24 апреля 2018

Это не из-за расширений, а из-за ключевого слова public для других классов. Если вы создаете несколько классов с ключевым словом public, они должны быть в отдельной единице компиляции .

Отметьте этот ответ, чтобы узнать, почему каждый публичный класс должен иметь отдельный файл .

...