Junior
Ce tipuri de clase există în Java?
sobes.tech AI
Răspuns de la AI
- Clase normale (regular / concretă): Pot fi instanțiate, conțin câmpuri, metode, constructori.
- Clase abstracte: Nu pot fi instanțiate direct. Pot conține metode abstracte (fără implementare) și metode obișnuite. Sunt folosite pentru a defini caracteristici comune pentru subclase.
abstract class AbstractClass { abstract void abstractMethod(); // Metodă abstractă void regularMethod() { System.out.println("Metodă obișnuită"); } } - Clase încorporate (nested classes): Sunt declarate în interiorul altei clase. Pot fi:
- Clase încorporate statice (static nested classes): Nu au acces la membrii non-statice ai clasei exterioare. Sunt create fără o instanță a clasei exterioare.
class OuterClass { static class StaticNestedClass { // ... } } - Clase interne (inner classes): Au acces la toți membrii clasei exterioare (inclusiv cei privați). Sunt legate de o instanță a clasei exterioare.
class OuterClass { class InnerClass { // Are acces la membrii OuterClass } } - Clase locale (local classes): Sunt declarate în interiorul unei metode, bucle sau bloc if. Accesul lor este limitat la aria lor de declarare.
class OuterClass { void someMethod() { class LocalClass { // Declarată local } LocalClass obj = new LocalClass(); } } - Clase anonime (anonymous classes): Fără nume, sunt create simultan cu declarația sau instanțierea. Sunt folosite pentru utilizare unică.
interface MyInterface { void myMethod(); } MyInterface anon = new MyInterface() { @Override public void myMethod() { System.out.println("Clasă anonimă"); } };
- Clase încorporate statice (static nested classes): Nu au acces la membrii non-statice ai clasei exterioare. Sunt create fără o instanță a clasei exterioare.
- Clase înregistrare (records) (din Java 14): Sintaxă compactă pentru declararea claselor imuabile destinate stocării datelor (POJO).
record Person(String name, int age) { // Constructor, getters, equals(), hashCode(), toString() generate automat }