Sobes.tech
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("Ανώνυμη κλάση");
          }
      };
      
  • Κλάσεις καταγραφής (records) (από Java 14): Συμπαγής σύνταξη για την δήλωση αμετάβλητων κλάσεων που προορίζονται για αποθήκευση δεδομένων (POJO).
    record Person(String name, int age) {
        // Αυτόματα δημιουργούνται ο κατασκευαστής, οι getters, τα equals(), hashCode(), toString()
    }