Java
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.
Örnek çözümü göster
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();
}
}
Kendini test et
-
Somut metot nedir?
- Gövdeli metot
- Gövdesiz metot
- Static metot
- Private metot
Cevabı göster
Gövdeli metot — Somut metot gövdesiyle yazılır.
-
Alt sınıf çağrımını tamamla
class Car ____ Vehicle {
public void start() { System.out.println("Çalıştı"); }
}
Cevabı göster
class Car extends Vehicle {
public void start() { System.out.println("Çalıştı"); }
}
-
Soyut ve somut kavramlarını eşle
- abstract
- Gövdesiz imza
- concrete
- Gövdeli metot
- extends
- Miras kelimesi
- super
- Üst sınıf erişimi
Sıradaki ders: Soyut sınıf vs interface