Junior
Koje vrste klase postoje u Javi?
sobes.tech АИ
Одговор од АИ
У Јави постоје следеће главне врсте класа:
-
Стандардна класа (Standard Class)
- Може садржати поља, методе, конструкторе.
- Може бити наследена од других класа, ако није проглашена као
final. - Може реализовати интерфејсе.
- Објављује се са модификаторима приступа (
public,protected,default,private).
-
Апстрактна класа (Abstract Class)
- Објављује се са кључном речи
abstract. - Не може бити директно инстанцирана.
- Може садржати апстрактне методе (без реализације) и обичне методе.
- Намењена је за наследство; подкласе треба да пруже реализацију апстрактних метода.
// Апстрактна класа за фигуру abstract class Shape { abstract double area(); // Апстрактна метода за израчунавање површине void display() { // Обична метода System.out.println("Ово је фигура."); } } - Објављује се са кључном речи
-
Коначна класа (Final Class)
- Објављује се са кључном речи
final. - Не може бити наследена од других класа.
- Користи се за спречавање проширења класе, обезбеђивање безбедности или неизменљивости имплементације.
// Коначна класа која се не може наследити final class ImmutableString { private final String value; public ImmutableString(String value) { this.value = value; } public String getValue() { return value; } } - Објављује се са кључном речи
-
Enum (Енум)
- Посебан тип класе, намењен за представљање фиксног скупа константи.
- Објављује се са кључном речи
enum. - Константе енум су по подразумеваној вредности
public static final. - Могу имати поља, методе и конструкторе (са скривеним модификатором
private).
// Енум за дане у недељи enum DayOfWeek { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } -
Анонимне класе (Anonymous Class)
- Класа без имена, која се креира и инстанцира истовремено.
- Често се користи за имплементацију интерфејса или проширење класа "на лету", када је потребна једнократна употреба.
- Не могу имати експлицитне конструкторе.
// Креирање анонимне класе која имплементира интерфејс Runnable Runnable r = new Runnable() { @Override public void run() { System.out.println("Рunning у анонимној класи."); } }; -
Унутрашње класе (Nested Class)
- Класе које су проглашене унутар друге класе.
- Постоје две врсте:
- Статичке унутрашње класе (Static Nested Class): проглашавају се са
static. Немају директан приступ не-статичким члановима спољашње класе. Инстанцирају се као обичне класе. - Унутрашње класе (Inner Class): не проглашавају се као
static. Имају приступ свим члановима спољашње класе, укључујућиprivate. Захтевају екземпляр спољашње класе за креирање.
- Статичке унутрашње класе (Static Nested Class): проглашавају се са
// Спољашња класа class OuterClass { private String outerField = "Outer"; // Статичка унутрашња класа static class StaticNestedClass { void display() { System.out.println("Унутар StaticNestedClass."); // Нема директан приступ outerField } } // Унутрашња класа class InnerClass { void display() { System.out.println("Унутар InnerClass. outerField: " + outerField); // Приступ outerField } } } -
Рекордне класе (Record - од Java 14)
- Објављују се са кључном речју
record. - Намењене су за чување података. Компилатор аутоматски генерише конструктор, методе приступа (
accessor methods),equals(),hashCode()иtoString(). - Поља рекорда су подразумевано
final.
// Рекорд за представљање тачке у 2D простору record Point(int x, int y) { // Компилатор ће генерисати конструктор, методе x(), y(), equals(), hashCode(), toString() } - Објављују се са кључном речју