Menu
Coddy logo textTech

Object Sınıfı

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

Java'da, oluşturduğunuz her sınıf otomatik olarak Object adındaki özel bir sınıftan miras alır. Herhangi bir yere extends yazmasanız bile, sınıfınız hala Object sınıfının bir alt sınıfıdır. Bu durum, Object sınıfını tüm sınıf hiyerarşisinin kökü yapar.

public class Person {
    // Bu örtülü olarak Object sınıfını genişletir
}

// Şuna eşdeğerdir:
public class Person extends Object {
}

Her sınıf Object sınıfından miras aldığı için, Java'daki her nesne birkaç yerleşik yönteme erişebilir. En yaygın kullanılanlar şunlardır:

YöntemAmaç
toString()Nesnenin dize temsilini döndürür
equals(Object obj)İki nesneyi eşitlik açısından karşılaştırır
hashCode()Nesne için bir karma kod değeri döndürür
getClass()Nesnenin çalışma zamanı sınıfını döndürür

Varsayılan olarak, bu metotlar genel uygulamalara sahiptir. Örneğin, toString() sınıf adını, ardından @ işaretini ve nesnenin onaltılık sistemdeki karma kodunu (hash code) döndürür; bu da pek kullanışlı değildir:

Person p = new Person();
System.out.println(p.toString());  // Çıktı: Person@1a2b3c4d

Bu nedenle, anlamlı davranış sağlamak için bu yöntemleri kendi sınıflarında sık sık geçersin. Object sınıfının evrensel üst sınıf olduğunu anlamak, herhangi bir nesneyi bir Object değişkeninde saklayabilmeni ve belirli yöntemlerin oluşturduğun her nesnede kullanılabilir olmasını açıklamaya yardımcı olur.

challenge icon

Görev

Kolay

Object sınıfının, kalıtılan Object metotlarını gösteren basit bir cihaz envanteri sistemi oluşturarak tüm Java sınıflarının evrensel üst sınıfı olarak nasıl görev yaptığını keşfedelim.

Kodunuzu düzenlemek için üç dosya oluşturacaksınız:

  • Gadget.java: Elektronik bir cihazı temsil eden bir sınıf oluşturun. Sınıfınız şunlara sahip olmalıdır:
    • name (String) ve year (int) için private alanlar
    • Her iki alanı da başlatan bir kurucu
    • getName() ve getYear() getter metotları
    Object sınıfındaki hiçbir metodu geçersiz kılmayın - önce varsayılan davranışı görmek istiyoruz.
  • Smartphone.java: Gadget sınıfını genişleten ve akıllı telefona özgü özellikler ekleyen bir alt sınıf oluşturun:
    • brand (String) için private bir alan
    • name, year ve brand alanlarını alan bir kurucu - üst sınıfa ait kısım için super(name, year) kullanın
    • Markayı döndüren bir getBrand() metodu
    • toString() metodunu, şunu döndürecek şekilde geçersiz kılın: Smartphone: [brand] [name] ([year])
  • Main.java: Varsayılan ve geçersiz kılınmış Object metotları arasındaki farkı gösterin. Üç girdi alacaksınız: bir cihaz adı, yıl ve marka. Aynı name ve year değerlerini (akıllı telefon için ayrıca brand değerini) kullanarak hem bir Gadget hem de bir Smartphone oluşturun, ardından:
    • Cihazın sınıf adını getClass().getSimpleName() kullanarak yazdırın
    • Cihazın varsayılan toString() metodunun "@" sembolünü içerip içermediğini yazdırın (true veya false yazdırın)
    • Akıllı telefonu, geçersiz kılınmış toString() metodunu kullanarak yazdırın

Üç girdi alacaksınız: cihaz/akıllı telefon adı (String), yıl (int) ve marka (String).

Bu görev, Object metotlarını geçersiz kılmanın neden önemli olduğunu gösterir - varsayılan toString() size Gadget@1a2b3c gibi bir şey verirken, özel sürümünüz anlamlı bilgiler sağlar!

Kendin dene

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Girdileri oku
        String name = scanner.nextLine();
        int year = scanner.nextInt();
        scanner.nextLine(); // yeni satır karakterini tüket
        String brand = scanner.nextLine();
        
        // TODO: name ve year ile bir Gadget nesnesi oluşturun
        
        // TODO: name, year ve brand ile bir Smartphone nesnesi oluşturun
        
        // TODO: getClass().getSimpleName() kullanarak gadget'ın sınıf adını yazdırın
        
        // TODO: gadget'ın toString() metodunun "@" içerip içermediğini yazdırın (true veya false)
        
        // TODO: smartphone nesnesini yazdırın (geçersiz kılınmış toString() metodunu kullanır)
        
    }
}
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