Junior
Ποιοι τύποι κλάσεων υπάρχουν στη Java;
sobes.tech AI
Απάντηση από AI
- Κανονικές (regular / concrete) κλάσεις: Μπορούν να δημιουργηθούν, περιέχουν πεδία, μεθόδους, κατασκευαστές.
- Αφηρημένες κλάσεις: Δεν μπορούν να δημιουργηθούν άμεσα. Μπορούν να περιέχουν αφηρημένες μεθόδους (χωρίς υλοποίηση) και κανονικές μεθόδους. Χρησιμοποιούνται για τον ορισμό κοινών χαρακτηριστικών για τις υποκλάσεις.
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) { // Αυτόματα δημιουργούνται ο κατασκευαστής, οι getters, τα equals(), hashCode(), toString() }