Java’da Abstraction (Soyutlama)

Java’nın nesne yönelimli programlama (OOP) prensiplerinden biri olan Abstraction (soyutlama), bir nesnenin sadece gerekli detaylarını kullanıcıya sunup, karmaşık iç yapıyı gizleme yöntemidir. Bu sayede programcılar, önemli olan işlemlere odaklanabilir, gereksiz detaylarla uğraşmak zorunda kalmazlar.

Bu yazıda abstraction nedir, neden kullanılır, nasıl uygulanır ve Java’daki soyut sınıf (abstract class) ve arayüz (interface) kavramlarıyla ilgili örnekler sunacağız.


✅ Abstraction (Soyutlama) Nedir?

Soyutlama, bir nesnenin sadece önemli özelliklerini ve davranışlarını ortaya koyarken, gereksiz veya karmaşık detaylarını gizlemesidir. Böylece sistem daha basit, anlaşılır ve yönetilebilir hale gelir.


Java’da Abstraction Nasıl Yapılır?

Java’da soyutlama iki temel yolla yapılır:

1. Soyut Sınıflar (Abstract Classes)

  • abstract anahtar kelimesi ile tanımlanır.
  • İçinde soyut (abstract) metotlar bulunabilir, bu metotların gövdesi yoktur.
  • Soyut sınıftan türeyen alt sınıflar, soyut metotları mutlaka override etmek zorundadır.
abstract class Sekil {
    abstract void ciz();  // Soyut metot

    public void bilgi() {  // Normal metot
        System.out.println("Bu bir şekildir.");
    }
}

2. Arayüzler (Interfaces)

  • Tüm metotlar soyut olarak kabul edilir (Java 8’den sonra default ve static metotlar eklenebilse de).
  • Çoklu implementasyon imkanı verir.
interface Canli {
    void nefesAl();
    void hareketEt();
}


📌 Soyut Sınıf Örneği

abstract class Hayvan {
    abstract void sesCikar();

    public void uyku() {
        System.out.println("Hayvan uyuyor.");
    }
}

class Kedi extends Hayvan {
    @Override
    void sesCikar() {
        System.out.println("Miyav");
    }
}

class Kopek extends Hayvan {
    @Override
    void sesCikar() {
        System.out.println("Hav Hav");
    }
}


Kullanımı

public class Main {
    public static void main(String[] args) {
        Hayvan kedi = new Kedi();
        kedi.sesCikar();
        kedi.uyku();

        Hayvan kopek = new Kopek();
        kopek.sesCikar();
        kopek.uyku();
    }
}


Interface Örneği

interface Ucan {
    void uc();
}

class Kus implements Ucan {
    public void uc() {
        System.out.println("Kuş uçuyor.");
    }
}

class Ucak implements Ucan {
    public void uc() {
        System.out.println("Uçak uçuyor.");
    }
}


💡 Abstraction’ın Avantajları

AvantajAçıklama
Karmaşıklığı azaltırGereksiz detaylar gizlenir
Esnek kod yapısı sağlarSınıflar farklı şekillerde implement edilebilir
Kolay bakımDeğişiklikler daha kolay yönetilir
Çoklu kalıtım sağlarInterface kullanımı ile Java çoklu kalıtımı destekler

⚠️ Soyut Sınıf ve Interface Arasındaki Farklar

ÖzellikSoyut Sınıf (Abstract Class)Arayüz (Interface)
Çoklu kalıtımDesteklenmez (birden fazla soyut sınıf kalıtımı yok)Desteklenir (birden fazla interface implement edilebilir)
Metot gövdesiNormal metotlar olabilirJava 8+ ile default ve static metotlar eklenebilir
DeğişkenlerNormal değişkenler tanımlanabilirSadece public static final sabitler olabilir
guest
0 Yorum
Eskiler
En Yeniler Beğenilenler
Inline Feedbacks
View all comments
0
YORUM YAPx