CodeBlanks Logo Icon CodeBlanks

Soyut ve somut

Soyut sınıfta somut metot öğrenirsin.

Soyut sınıfta somut metot

Bir abstract sınıf hem abstract hem de somut metotlar içerebilir. Somut metotların gövdesi vardır; alt sınıf bunları olduğuyla kullanır. Bu, ortak davranışı tek yerde toplamanın yoludur.

Örnek: abstract class Vehicle { abstract void start(); void stop() { System.out.println("Durdu"); } }. Burada start abstract'tır; alt sınıf yazar. Ama stop somuttur; gövdesi abstract sınıfta verilir. Alt sınıf stop'u override etmeden de kullanabilir. Bu, abstract sınıfın interface'ten ayrıldığı yerdir: interface'in aksine ortak durum ve davranış taşır. Kod tekrarını azaltır.

Somut metot paylaşımı

Somut metotlar abstract sınıfta bir kez yazılır; tüm alt sınıflar bunu miras alır. Bu, ortak davranışı tek yerde tutmanın güçlü bir yoludur.

Örnek: Vehicle abstract sınıfında void describe() somut metodu tanımlarsan, hem Car hem Truck bunu kullanır. Metodu değiştirirsen tüm alt sınıflar güncellenir. Bu, bakımı kolaylaştırır. Alt sınıf isterse metodu override edebilir; ama zorunda değildir. Abstract sınıf, ortak davranışı merkezileştirir. Bu özellik, abstract sınıfı interface'ten ayıran ana farktır. Interface'te default hariç gövdeli metot bulunmazdı.

Uygulama Vehicle sınıfına somut metot ekle

Vehicle adında bir abstract sınıf tanımla. İçine abstract void start(); imzasını ekle ve void stop() somut metodunu gövdesiyle yaz; gövde System.out.println("Durdu"); yazsın. class Car extends Vehicle yaz; public void start() metodunu gövdesiyle yaz ve içine System.out.println("Çalıştı"); koy. main içinde Car c = new Car(); ile c.start() ve c.stop() çağır.

Başlangıç kodu

Main.java
// Soyut Vehicle sınıfını tanımla
// start abstract, stop somut olsun
// Car alt sınıfını yaz
// main'de start ve stop çağır

Örnek çözüm

Main.java
abstract class Vehicle {
    abstract void start();
    void stop() {
        System.out.println("Durdu");
    }
}
class Car extends Vehicle {
    public void start() {
        System.out.println("Çalıştı");
    }
}
class Main {
    public static void main(String[] args) {
        Car c = new Car();
        c.start();
        c.stop();
    }
}

Beklenen çıktı

Çalıştı
Durdu

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Somut metot nedir?

  • Gövdeli metot Doğru cevap
  • Gövdesiz metot
  • Static metot
  • Private metot

Açıklama: Somut metot gövdesiyle yazılır.

2 Alt sınıf çağrımını tamamla

Soru
class Car ____ Vehicle {
    public void start() { System.out.println("Çalıştı"); }
}
Cevap
class Car extends Vehicle {
    public void start() { System.out.println("Çalıştı"); }
}

Açıklama: extends kelimesi abstract sınıftan miras alır.

3 Soyut ve somut kavramlarını eşle

Kavram Anlamı
abstract Gövdesiz imza
concrete Gövdeli metot
extends Miras kelimesi
super Üst sınıf erişimi

Orta seviye bölümündeki tüm dersler