Junior
Какви видове класове има в Java?
sobes.tech AI
Отговор от AI
- Обикновени (регулярни / конкретни) класове: Могат да бъдат инстанцирани, съдържат полета, методи, конструктори.
- Абстрактни класове: Не могат да бъдат инстанцирани директно. Могат да съдържат абстрактни методи (без реализация) и обикновени методи. Използват се за определяне на общи характеристики за подкласовете.
abstract class AbstractClass { abstract void abstractMethod(); // Абстрактен метод void regularMethod() { System.out.println("Обикновен метод"); } } - Вложени класове (nested classes): Декларират се вътре в друг клас. Могат да бъдат:
- Статични вложени класове (static nested classes): Нямат достъп до нестатичните членове на външния клас. Създават се без екземпляр на външния клас.
class OuterClass { static class StaticNestedClass { // ... } } - Вътрешни класове (inner classes): Имат достъп до всички членове на външния клас (включително приватните). Свързани са с екземпляр на външния клас.
class OuterClass { class InnerClass { // Има достъп до членовете на OuterClass } } - Локални класове (local classes): Декларират се вътре в метод, цикъл или if блок. Достъпът до тях е ограничен до областта им на декларация.
class OuterClass { void someMethod() { class LocalClass { // Локално деклариран } LocalClass obj = new LocalClass(); } } - Анонимни класове (anonymous classes): Без име, създават се едновременно с декларацията или инстанцирането. Използват се за еднократна употреба.
interface MyInterface { void myMethod(); } MyInterface anon = new MyInterface() { @Override public void myMethod() { System.out.println("Анонимен клас"); } };
- Статични вложени класове (static nested classes): Нямат достъп до нестатичните членове на външния клас. Създават се без екземпляр на външния клас.
- Записани класове (records) (от Java 14): Компактен синтаксис за обявяване на неизменяеми класове, предназначени за съхранение на данни (POJO).
record Person(String name, int age) { // Автоматично генерирани конструктор, гетъри, equals(), hashCode(), toString() }