Sobes.tech
Junior

Java'da hangi sınıf türleri vardır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Java'da aşağıdaki ana sınıf türleri bulunmaktadır:

  1. Standart Sınıf (Standard Class)

    • Alanlar, metodlar, yapıcılar içerebilir.
    • final olarak ilan edilmediyse diğer sınıflar tarafından kalıtılabilir.
    • Arabirimleri uygulayabilir.
    • Erişim belirteçleri (public, protected, default, private) ile ilan edilir.
  2. Soyut Sınıf (Abstract Class)

    • abstract anahtar kelimesiyle ilan edilir.
    • Doğrudan örneklenemez.
    • Soyut metodlar (geliştirilmemiş) ve normal metodlar içerebilir.
    • Miras almak içindir; alt sınıflar soyut metodların uygulamasını sağlamalıdır.
    // Şekil için soyut sınıf
    abstract class Shape {
        abstract double area(); // Alan hesaplama soyut metodu
    
        void display() { // Normal metod
            System.out.println("This is a shape.");
        }
    }
    
  3. Son Sınıf (Final Class)

    • final anahtar kelimesiyle ilan edilir.
    • Diğer sınıflar tarafından kalıtılamaz.
    • Sınıfın genişletilmesini engellemek, güvenliği sağlamak veya değişmezliği garanti altına almak için kullanılır.
    // Kalıtılamayan son sınıf
    final class ImmutableString {
        private final String value;
    
        public ImmutableString(String value) {
            this.value = value;
        }
    
        public String getValue() {
            return value;
        }
    }
    
  4. Enumlar (Enum)

    • Sabitler kümesini temsil etmek için tasarlanmış özel sınıf türüdür.
    • enum anahtar kelimesiyle ilan edilir.
    • Enum sabitleri varsayılan olarak public static final'dır.
    • Alanlar, metodlar ve yapıcılar içerebilir (private ile).
    // Haftanın günleri için enum
    enum DayOfWeek {
        MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
    }
    
  5. Anonim Sınıflar (Anonymous Class)

    • İsimsiz sınıf, aynı anda oluşturulup örneklendirilen sınıf.
    • Genellikle arayüzleri uygulamak veya sınıfları "canlı" olarak genişletmek için kullanılır, tek seferlik kullanım gerektiğinde.
    • Açık yapıcılar olamaz.
    // Runnable'ı uygulayan anonim sınıf oluşturma
    Runnable r = new Runnable() {
        @Override
        public void run() {
            System.out.println("Running in an anonymous class.");
        }
    };
    
  6. İç içe sınıflar (Nested Class)

    • Bir başka sınıfın içinde bildirilen sınıflar.
    • İki türü vardır:
      • Statik iç içe sınıflar (Static Nested Class): static ile ilan edilir. Dış sınıfın statik olmayan üyelerine doğrudan erişemez. Normal sınıf gibi örneklenir.
      • İç sınıflar (Inner Class): static olarak ilan edilmez. Tüm dış sınıf üyelerine, private dahil, erişebilir. Bir dış sınıf örneğine ihtiyaç duyar.
    // Dış sınıf
    class OuterClass {
        private String outerField = "Outer";
    
        // Statik iç içe sınıf
        static class StaticNestedClass {
            void display() {
                System.out.println("Inside StaticNestedClass.");
                // outerField'a doğrudan erişim yok
            }
        }
    
        // İç sınıf
        class InnerClass {
            void display() {
                System.out.println("Inside InnerClass. outerField: " + outerField); // outerField erişimi
            }
        }
    }
    
  7. Kayıt sınıflar (Record - Java 14 ve sonrası)

    • record anahtar kelimesiyle ilan edilir.
    • Veri saklamak için tasarlanmıştır. Derleyici otomatik olarak yapıcı, erişim metodları (accessor methods), equals(), hashCode() ve toString() üretir.
    • Record alanları otomatik olarak final'dır.
    // 2D uzayda nokta temsil eden kayıt
    record Point(int x, int y) {
        // Derleyici yapıcı, x(), y(), equals(), hashCode(), toString() metodlarını oluşturur
    }