Menu
Coddy logo textTech

Temel Kalıtım (extends)

Coddy'nin Java Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 20 / 87.

Kalıtım, OOP'nin temel sütunlarından biridir. Bir sınıfın başka bir sınıfın özelliklerini ve metotlarını edinmesini sağlayarak kodun yeniden kullanılmasını teşvik eder ve sınıflar arasında doğal bir hiyerarşi kurar.

Java'da, extends anahtar kelimesini kullanarak bir kalıtım ilişkisi oluşturursunuz. Miras alan sınıfa subclass (veya alt sınıf), miras alınan sınıfa ise superclass (veya üst sınıf) denir.

public class Animal {
    private String name;
    
    public Animal(String name) {
        this.name = name;
    }
    
    public void eat() {
        System.out.println(name + " is eating");
    }
    
    public String getName() {
        return name;
    }
}

public class Dog extends Animal {
    public Dog(String name) {
        super(name);  // Üst sınıf kurucusunu çağırır
    }
    
    public void bark() {
        System.out.println(getName() + " says woof!");
    }
}

Dog sınıfı, eat() metodunu ve getName() metodunu Animal sınıfından otomatik olarak devralır. Ayrıca bark() gibi kendi metodlarını da tanımlayabilir:

Dog myDog = new Dog("Buddy");
myDog.eat();   // Kalıtımla alınan: "Buddy is eating"
myDog.bark();  // Kendi metodu: "Buddy says woof!"

Kalıtımı bir "bir tür" ilişkisi olarak düşün. Bir Dog bir Animal'dır, bu nedenle Dog sınıfının Animal sınıfını genişletmesi mantıklıdır. Bu ilişki, ortak işlevleri paylaşırken kendi benzersiz davranışlarını da ekleyen özelleştirilmiş sınıflar oluşturmanı sağlar.

challenge icon

Görev

Kolay

Kalıtımın işleyişini gösteren basit bir araç sistemi oluşturalım. Ortak araç özelliklerini barındıran bir üst sınıf ve özel davranışlarla onu genişleten bir alt sınıf oluşturacaksın.

Kodunu üç dosyada düzenleyeceksin:

  • Vehicle.java: Herhangi bir aracı temsil eden üst sınıfı oluştur. Şunlara sahip olmalı:
    • Aracın brand değerini tutan private bir alan (String)
    • Marka adını kabul eden ve bunu alana atayan bir kurucu. (Vehicle hiyerarşinin en üstünde olduğundan burada super() çağrısı gerekmez.)
    • Markayı döndüren bir getBrand() yöntemi
    • Şunu yazdıran bir start() yöntemi: [brand] is starting
  • Motorcycle.java: Vehicle sınıfını genişleten bir alt sınıf oluştur. Motosiklet bir araçtır; bu nedenle bu "is-a" ilişkisi kalıtımı uygun kılar. Motorcycle sınıfın şunları yapmalı:
    • Vehicle sınıfından kalıtım almak için extends kullanmalı
    • Markayı alan ve super(brand) kullanarak üst sınıfa aktaran bir kurucuya sahip olmalı
    • Şunu yazdıran kendi wheelie() yöntemini eklemeli: [brand] is doing a wheelie!
  • Main.java: Bir Motorcycle nesnesi oluşturarak ve hem kalıtımla gelen hem de kendine özgü davranışları göstererek her şeyi bir araya getir. Bir girdi alacaksın: marka adı. Şunları çağırarak iki satır yazdır:
    • Kalıtımla gelen start() yöntemi
    • Motorcycle sınıfının kendi wheelie() yöntemi

Motosikletin için bir girdi alacaksın: marka adı (String).

Motorcycle sınıfının, bunları yeniden yazmana gerek kalmadan otomatik olarak start() ve getBrand() erişimine sahip olduğuna dikkat et — kalıtımın gücü budur!

Kendin dene

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String brand = scanner.nextLine();
        
        // TODO: Marka ile bir Motorcycle nesnesi oluşturun
        
        // TODO: Kalıtılan start() metodunu çağırın
        
        // TODO: wheelie() metodunu çağırın
    }
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online Java derleyicisi