Java Kalıtım (Inheritance) Nedir? IS-A & HAS-A İlişkileri ve Kod Örnekleri

Java kalıtım nedir? Nesne yönelimli programlamada (OOP) kalıtım (inheritance), kodun yeniden kullanımını ve çok biçimliliği (polymorphism) sağlar.
Bu yazıda java inheritance mantığı, IS-A ve HAS-A ilişkisi, örnek java kodları ve en çok merak edilen noktaları bulacaksınız.

Java Kalıtım Inheritance Simgesi

Java’da Kalıtım (Inheritance) Temelleri

Java'da kalıtım, bir sınıfın başka bir sınıfın tüm özelliklerini ve metotlarını miras almasını sağlar.
Kalıtım ile kod tekrarı önlenir, programlama esnekliği ve OOP prensipleri güçlenir.

  • Java kalıtım nedir? Bir class'ın başka bir class'ın tüm özellik ve davranışlarını miras almasıdır.
  • inheritance nedir? OOP'nin temel kavramlarından biri; kodun tekrarını azaltır ve genişletilebilirlik sağlar.
  • IS-A ilişkisi: extends ile kurulur (Araba IS-A Araç).
  • HAS-A ilişkisi: Bir class'ın içinde başka bir class'a ait nesne barındırmasıdır (Koyun HAS-A Yun).

Java instanceof Operatörü ile Kalıtım Kontrolü

Java'da bir nesnenin belirli bir türde olup olmadığını kontrol etmek için instanceof operatörü kullanılır.

class Test {
    public static void main(String [] args) {
        Test t1 = new Test();
        Test t2 = new Test();
        if (!t1.equals(t2))
            System.out.println("eşit değiller");
        if (t1 instanceof Object)
            System.out.println("t1 bir objedir.");
    }
}
Çıktı:
eşit değiller
t1 bir objedir.
    
Her Java sınıfı, otomatik olarak Object sınıfından miras alır. Yani tüm class'lar Java'nın en üst sınıfı olan Object'in metotlarına sahiptir (equals(), toString(), hashCode() gibi).

Kodun Yeniden Kullanımı: Java Kalıtım Örneği

Kalıtım, temel sınıftaki metotların alt sınıflarda tekrar yazılmadan kullanılmasına olanak tanır.

class OyunSablonu {
    public void sablonuTasarla() {
        System.out.println("sablon tasarlanıyor.");
    }
}
class Oyuncu extends OyunSablonu {
    public void oyunOyna() {
        System.out.println("oyun oynanıyor.");
    }
}
public class TestSablonu {
    public static void main (String[] args) {
        Oyuncu oyuncu = new Oyuncu();
        oyuncu.sablonuTasarla();
        oyuncu.oyunOyna();
    }
}
Çıktı:
sablon tasarlanıyor.
oyun oynanıyor.
    
Alt sınıf (Oyuncu), üst sınıftan (OyunSablonu) miras aldığı sablonuTasarla() metodunu tekrar yazmadan kullanabiliyor.

Java’da Polimorfizm (Çok Biçimlilik) ve Kalıtım

Polimorfizm, kalıtım sayesinde bir nesnenin üst sınıf tipinde davranmasını sağlar.

class OyunSablonu {
    public void sablonuTasarla() {
        System.out.println("sablon tasarlanıyor.");
    }
}
class Oyuncu extends OyunSablonu {
    public void oyunOyna() {
        System.out.println("oyun oynanıyor.");
    }
}
class OyunBolumu extends OyunSablonu {
    public void getBolumler() {
        System.out.println("Bölüm Seçiliyor");
    }
}
public class TestSablonu {
    public static void main (String[] args) {
        OyunBolumu oyun = new OyunBolumu();
        Oyuncu oyuncu = new Oyuncu();
        doSablon(oyun);
        doSablon(oyuncu);
    }
    public static void doSablon(OyunSablonu sablon) {
        sablon.sablonuTasarla();
    }
}
Çıktı:
sablon tasarlanıyor.
sablon tasarlanıyor.
    
doSablon metodu, hem Oyuncu hem de OyunBolumu sınıfını aynı şekilde, üst sınıf türünde parametre ile işleyebiliyor (polimorfizm).

IS-A & HAS-A İlişkileri Java’da Nasıl Kurulur?

IS-A ilişkisi, bir sınıfın başka bir sınıftan extends anahtar kelimesi ile türemesidir.
HAS-A ilişkisi ise bir sınıfın başka bir sınıfın nesnesini içererek kompozisyon yapmasıdır.

public class Arac { }
public class Araba extends Arac { }
public class Toyota extends Araba { }
    
Araba IS-A Arac ve Toyota IS-A Arac anlamına gelir. Yani alt sınıf üst sınıfın tüm özelliklerini miras alır.
public class Hayvan { }
public class Koyun extends Hayvan {
    private Yun benimYunum;
}
    
Koyun IS-A Hayvan (çünkü extends ile türemiştir), Koyun HAS-A Yun (çünkü kendi içinde Yun nesnesi tutar).

Java Kalıtımının Avantajları

  • Kodun tekrarını önler, yazılımı sadeleştirir.
  • Çok biçimlilik (polymorphism) ile esnek ve ölçeklenebilir kodlama sağlar.
  • OOP mantığını en iyi şekilde uygulatır.
  • IS-A ve HAS-A ilişkileri ile gerçek hayatı daha doğru modellemenizi sağlar.

Sık Sorulan Sorular

Java kalıtım nedir ve neden kullanılır?
Kalıtım (inheritance), bir class'ın başka bir class'ın özellik ve metotlarını miras almasını sağlar. Kod tekrarını önler ve bakım kolaylığı sağlar.
Java’da inheritance anahtar kelimesi nedir?
extends anahtar kelimesi ile inheritance sağlanır.
IS-A ve HAS-A ilişkileri arasındaki fark nedir?
IS-A miras yoluyla kurulur (extends), HAS-A ise bir class'ın başka bir class'ı içinde nesne olarak bulundurmasıyla olur.

İlgili Yazılar

Bir sonraki Java anlatımında görüşmek üzere! Takipte kalın 😊
Tüm yazılar için sitemizi ziyaret edin!

Beğendiysen bir çay ısmarlayabilirsin ☕

Bana çay ısmarla

Java ile ilgili yorumlar

Yorum Paylaş

EMail Zorunlu alanlar * *