Sobes.tech
Junior — Middle

Ποια είναι η διαφορά μεταξύ των μεταβλητών που δηλώνονται σε μια διεπαφή και των μεταβλητών σε μια αφηρημένη κλάση;

sobes.tech AI

Απάντηση από AI

В Java переменные, объявленные в интерфейсе, по умолчанию являются public static final — то есть это константы, доступные без создания экземпляра, и их нельзя изменить.

В абстрактном классе переменные могут быть любого модификатора доступа, не обязательно final или static. Они могут быть экземплярными (каждый объект имеет свою копию) или статическими. Абстрактный класс позволяет хранить состояние, а интерфейс — только константы.

Пример:

interface MyInterface {
    int CONST = 10; // public static final по умолчанию
}

abstract class MyAbstractClass {
    protected int value; // экземплярная переменная
    public static final int CONST = 20; // константа
}