Ты спрашиваешь только про верхушку айсберга.
enum - это пользовательский тип данных, и это не список. Я полагаю тебе уже знакомо что такое тип данных. Так вот у всех типов данных есть перечень значений:
у int - цифры, у char - символы и т.д. enum (перечисление) позволит тебе создать тип данных со своими значениями.
enum color { RED, GREEN, BLUE };
тут создан тип color который может принимать значения RED, GREEN, BLUE, как int может принимать 1,2,3...
Список - это грубо говоря то же самое, что массив.
Класс - это шаблон для создания объекта.
public class Dog{
String breed;
int age;
String color;
void barking(){
//code here
}
void hungry(){
//code here
}
void sleeping(){
//code here
}
}
Мы создали класс Dog, у которого есть поля, которые будут характеризовать в будущем объект (порода, возраст и цвет) и функции которые объект сможет выполнять. Теперь создадим наш Объект:
Dog fluffy = new Dog();
теперь у нас есть собака fluffy. Ей можно указать породу, возраст, цвет:
fluffy.breed = "ovcharka";
fluffy.age = 10;
fluffy.color = "searij";
fluffy может выполнить функции, которые есть в ее классе
fluffy.barking();
fluffy.hungry();
fluffy.sleeping();
Теперь конструктор. Это специальная функция, которая дает значения полям объекта во время создания. В предыдущем примере мы создали сначала, пустой объект, а потом его заполняли данными. В случае с конструкторам будет выглядеть так
public class Dog{
public Dog(String breed, int age) { //это контсруктор
this.breed = breed;
this.age = age;
this.color = "grey";
}
String breed;
int age;
String color;
}
Создаем объект
Dog fluffy = new Dog("ovcharka",10);
У нас теперь есть объект fluffy с такими же значениями как в примере без конструктора.
Что такое this - это ссылка на объект из вне. То есть строчка this.breed = breed; говорит что я хочу присвоить полю объекта, который сейчас использую
переменную из функции-конструктора. это равносильно fluffy.breed = breed; в случае этого объекта.
Как я уже сказал это всего лишь верхушка и многое еще предстоит узнать. Удачи!