Error:(52, 25) java: non-static variable this cannot be referenced from a static context

139
18 марта 2019, 10:30

Можете помочь, пожалуйста. Я не знаю, как изменить код, чтобы не было этой ошибки. При этом не надо использовать mutable объекты.

public class Lab8 {
    class Device {
        String name;
        String model;
        String year;
        public String getName(){ return name; }
        public String getModel(){ return model; }
        public String getYear(){ return year; }
        public Device(String name, String model, String year){
            this.name=name;
            this.model=model;
            this.year=year;
        }
        public void display(){
            System.out.println("Name: " + name);
            System.out.println("Model: " + model);
            System.out.println("Year: " + year);
        }
    }
    class Laptop extends Device{
        public Laptop(String name, String model, String year) {
            super(name, model, year);
        }
    }
    class Tablet extends Device{
        public Tablet(String name, String model, String year) {
            super(name, model, year);
        }
        @Override
        public void display(){
            System.out.printf("Name -> :) %s \n", getName());
            System.out.printf("Model -> :) %s \n", getModel());
            System.out.printf("Year -> :) %s \n", getYear());
        }
    }
    class PC extends Device {
        public PC(String name, String model, String year) {
            super(name, model, year);
        }
    }
    public static void main(String[] args){
        Laptop Laptop = new Laptop("Laptop", "ASUS", "2018");
        Laptop.display();
        Tablet Tablet = new Tablet("Tablet", "SONY", "2010");
        Tablet.display();
        PC PC = new PC("PC", "HP", "2017");
        PC.display();
    }
}
Answer 1

Вся проблема заключается в том, что в одном классе у вас есть метод main, и поля класса. Если вы хотите, чтобы операции происходили в одном классе/фале, то поля класса следует обозначать как её static. Другое решение проблемы - это создать отдельный класс только с методом main, где и проводить все операции, а из Lab8 main удалить.

READ ALSO
Как из метода вызвать другой метод?

Как из метода вызвать другой метод?

При работе с API я замечаю как интересно можно "вытащить" данные из объекта

482
Помогите разобраться с анимацией

Помогите разобраться с анимацией

Подскажите пожалуйста что поправитьДелаю анимацию на CSS

154
float right не работает

float right не работает

Всем привет, простейший код - а уже не работает float right элемента toplineю Работаю с Mozilla firefox HTML:

143
Управление обрезкой текста CSS

Управление обрезкой текста CSS

Есть некая строка "шапка" с набором разных элементовПри уменьшении ширины родителя, эта шапка будет сжиматься

143