← Back to list

Abstraction

Bu yazıda, Abstract Class ve Interface’in tanımını, özelliklerini ve uygulama alanlarını inceleyeceğiz. Hadi başlayalım!

İpek Şevik · 2024-10-03 09:40 · 50 claps · 3.1 min read
#abstract-class #abstract-class-in-java #abstract-class-interface #oop #java-interface
Open on Medium ↗
Wiki topics: TLS · Design Tools & Workflow

Abstraction

Bu yazıda, Abstract Class ve Interface’in tanımını, özelliklerini ve uygulama alanlarını inceleyeceğiz. Hadi başlayalım!

Abstract Class (Soyut Sınıf)

Abstract Class, kullanıcıdan gereksiz detayları gizleyerek yalnızca gerekli özellikleri gösterme işlemidir. Nesne yönelimli programlamanın önemli bir parçasıdır. Bu yapı, kendisinden doğrudan nesne türetilmeyen ve yalnızca kalıtım amacıyla kullanılan bir üst sınıf olarak işlev görür.

Abstract Class’tan türeyen alt sınıflar, soyut sınıfın tanımladığı tüm soyut metotları ya uygulamak ya da bunları kendi ihtiyaçlarına göre override etmek (polimorphism) zorundadır. Bu durum, alt sınıfların Abstract Class’ın belirlediği temel işlevselliği kendi ihtiyaçlarına uygun şekilde özelleştirebilmelerini sağlar. Abstract Class’lar soyut olmayan metotlar da içerebilir. Bu metotlar alt sınıflar tarafından ihtiyaç duyulduğunda override edilebilir. Bu esneklik, yazılımın daha verimli ve yönetilebilir olmasına katkıda bulunur. Sonuç olarak, Abstract Class’lar, kodun düzenli ve anlaşılır olmasını sağlarken, aynı zamanda genişletilebilirliği artırarak nesne yönelimli programlamada esneklik ve yapı kazandırır.

Abstract Class ve Polymorphism

Abstract Class, Polymorphism’in uygulanması için bir temel oluşturur. Alt sınıflar, Abstract Class’tan türetilirken Polymorphism özelliklerini kullanarak aynı metotları farklı şekillerde uygulayabilirler. Abstract Class bir yapıyı tanımlar ve alt sınıflara belirli kurallar getirirken, polymorphism bu yapıların farklı biçimlerde kullanılmasını sağlar. Her ikisi de nesne yönelimli programlamada kodun esnekliğini ve yeniden kullanılabilirliğini artırır.

Java’da Abstract Class Tanımlama

Java’da bir Abstract Class tanımlandığında, Abstract metotların isimlerinin önüne abstract ifadesi eklenir. Abstract metotlar, isimleri, dönüş değerleri ve parametreleri ile tanımlanırlar ancak içerikleri yoktur yani bu metotların gövdesi bulunmaz. Bu durum, alt sınıfların bu metotları nasıl uygulayacaklarına dair bir boş şablon sunar.

public abstract class SoyutSinifAdi{}
public abstract veri tipi fonksiyonAdi();

Örnek 1

[embed]

Animal adında bir Abstract Class oluşturalım. Bu Class’ı, hayvanların ortak özelliklerini tanımlamak için kullanalım. İçinde makeSound() adında bir soyut metot ve eat() adında bir somut metot barındırsın.

[embed]

[embed]

Dog ve Cat Class’larını Animal sınıfından türettik ve her biri makeSound() metodunu kendi ihtiyaçlarına göre özelleştirerek farklı sesler çıkardı.

[embed]

Main Class’ta, Animal türünde referanslar kullanarak Dog ve Cat nesnelerini oluşturduk. Bu nesneler, kendi makeSound() metodunu çağırarak farklı sesler çıkardı. Her iki nesne de eat metodunu miras alarak "Animal is eating." ifadesini yazdırdı.

Interface (Arayüz)

Interface, sınıfların oluşturulması için kullanılan tasarım şablonlarıdır. Bu yapılar, sınıfların uyması gereken kuralların bütününü belirler. Interface’ten türeyen sınıflar, Interface’te belirtilen şartlara uymak zorundadır.

Java dilinde sınıflar arası çoklu miras işlemlerinin desteklenmediği durumlarda, Interface’ler sınıf yapılarında çoklu miras işlemlerinin söz konusu olduğu durumlar için kullanılır. Interface’ler, sınıf yapısıyla benzerlik gösterir ancak sınıflar gibi new anahtar kelimesiyle oluşturulmazlar. Yalnızca public, static ve final değişkenler içerebilir ve içlerinde yalnızca gövdesi olmayan soyut metotlar tanımlanabilir. Bu metotlar, soyut sınıflardaki gibi abstract anahtar kelimesiyle işaretlenmez, çünkü interface içindeki her metot otomatik olarak soyut kabul edilir. Ayrıca, interface altında tanımlanan tüm öğeler varsayılan olarak public erişim belirtecine sahiptir ve bu öğelere başka bir erişim belirteci uygulanamaz.

Interface'ler birbirinden miras alabilir ve bir interface aynı anda birden fazla interface'den türetilebilir. Bu durumda, interface'den türetilen sınıf, çoklu miras işlemi ortaya çıkaran arayüzden türetilmiş olur. Bir interface içinde yer alan öğeler, kendisinden türetilen sınıf içinde mutlaka kullanılmalıdır. Interface'ler, interface anahtar kelimesiyle tanımlanırken, sınıflara uygulanması ise implements anahtar kelimesiyle gerçekleştirilir.

Interface ve Abstract Class

Java’da Interface Tanımlama

//Interface tanımlıyoruz
public interface ArayuzAdi{
//ozellikler;
//metotlar;
}

//Interface’i uygulayan sınıfları tanımlıyoruz
public class sinifAdi implements ArayuzAdi{
//sinif icerisinde yapilacak islemler;
}

Bir sınıf bir interface’i implement edeceği zaman, o interface içerisindeki tüm metot başlıklarının, implement eden sınıf içerisinde uygulanmalıdır.

Örnek 2

[embed]

Animal adında bir Interface oluşturalım ve bu Interface hayvanların ortak özelliklerini tanımlamak için kullanalım.

[embed]

[embed]

Dog ve Cat sınıfları, Animal Interface’ini uygular. Her iki sınıf, makeSound() ve eat() metodlarını kendi özgü biçimlerinde tanımlar.

[embed]

Main sınıfında, Animal Interface’ini uygulayan Dog ve Cat sınıflarından nesneler oluşturduk ve bu nesnelerle ilgili metotları çağırdık.

Bu yazıda, Abstract Class ve Interface’in tanımını, özelliklerini ve uygulama alanlarını inceledik. Bir sonraki yazımızda Static ve Final kavramlarına değineceğiz. Görüşmek üzere!


메타데이터
post_id
c46c06110f95
slug
abstract-class-soyut-sınıf-c46c06110f95
url
https://medium.com/@ipeksevik/abstract-class-soyut-s%C4%B1n%C4%B1f-c46c06110f95
canonical_url
https://medium.com/@ipeksevik/abstract-class-soyut-s%C4%B1n%C4%B1f-c46c06110f95
author_url
https://medium.com/@ipeksevik
status
ok
fetched_at
2026-07-18 08:34:37