Yavuzlar
Ana sayfaTelegram
  • Yavuzlar
  • VulnLab
  • CodinLab
  • 📚EĞİTİM
    • PHP
      • XAMPP kurulumu
      • VS Code Kurulum
      • 1.0 PHP Nedir
      • 1.1 Dosya Oluşturma
      • 1.2 Syntax (Yazım Kuralları)
      • 1.3 PHP'de Echo ve Print
      • 1.4 PHP'deki yorumlar
      • 1.5 PHP Değişkenleri
      • 1.6 Operatörler (Operators)
      • 1.7 Veri Türünü Alma
      • 1.8 PHP'de String
      • 1.9 PHP'de Sabitler
      • 2.0 PHP'de If Else Elseif
      • 2.1 Switch Case
      • 2.2 PHP'de Döngüler
      • 2.3 PHP'de Diziler (Arrays)
      • 2.4 PHP'de Süper Global Değişkenleri
      • 2.5 PHP'de Cookie (Çerez) Ve Session (Oturum) Yöntemleri
      • 2.6 Form işlemleri
    • C++
      • 1.0 Temeller
        • 1.1 Dosya Oluşturma
        • 1.2 Syntax (Yazım Kuralları)
        • 1.3 Yorum Satırları
        • 1.4 C++ Değişkenleri
          • 1.4.1 Değişken Türleri
        • 1.5 Operatörler (Operators)
        • 1.6 Namespace
        • 1.7 Kullanıcı Girdisi (User Input)
        • 1.8 C++ Stringleri (C++ Strings)
        • 1.9 Matematik (Math) Fonksiyonları
        • 1.10 Booleans
        • 1.11 If Else
        • 1.12 Switch
        • 1.13 While Döngüsü
          • 1.13.1 Do While Döngüsü
        • 1.14 For Döngüsü
        • 1.15 Break/Continue
        • 1.16 Diziler
        • 1.17 Structures
        • 1.18 Enums
        • 1.19 References
        • 1.20 Pointers
      • 2.0 Fonksiyonlar
      • 3.0 Sınıflar
        • 3.1 OOP
        • 3.2 Sınıflar ve Objeler
        • 3.3 Sınıf Methodları
        • 3.4 Yapıcılar (Constructors)
        • 3.5 Erişim Belirleyicileri (Access Specifiers)
        • 3.6 Kapsülleme (Encapsulation)
        • 3.7 Inheritance
        • 3.8 Polimorfizm (Polymorphism)
        • 3.9 Dosyalar (Files)
        • 3.10 İstisnalar (Exceptions)
        • 3.11 Tarih ve Zaman (Date and Time)
      • 4.0 Veri Yapıları (Data Structures)
        • 4.1 Veri Yapıları ve STL
        • 4.2 Vektörler (Vectors)
        • 4.3 Listeler (Lists)
        • 4.4 Yığınlar (Stacks)
        • 4.5 Kuyruklar (Queues)
        • 4.6 Deque (Çift Uçlu Kuyruk)
        • 4.7 Küme (Set)
        • 4.8 Maps
        • 4.9 Iterator
        • 4.10 Algoritmalar
  • 🛠️ARAÇLAR
    • Aircrack-ng
    • Airgeddon
    • Arjun
    • BeEF
    • Bettercap
    • Docker
    • Gelişmiş Wireshark Kullanımı (Advanced Wireshark Usage)
    • Google Dorks
    • Hping3
    • John the Ripper
    • Metasploit Framework
    • Netcat
    • Nmap
    • OSINT Framework
    • PEASS-ng
    • Sublist3r
    • XSS Scanner
    • Wireshark
    • ZAP
    • HYDRA
  • 🖥️İŞLETİM SİSTEMLERİ
    • Linux101
    • MBR
  • 🔑KRİPTOLOJİ
    • Dijital Sertifika ve İmzalar
    • Sezar Şifrelemesi
    • Steganografi
    • Veri Şifreleme (Data Encryption)
  • 🔏Network
    • Domain Name Server (DNS)
    • Firewall Nedir? Nasıl Çalışır ?
    • Ortadaki Adam Saldırısı (Man In The Middle Attack)
    • OSI Modeli
    • Sanal Özel Ağlar (VPN)
    • World Wide Web (WWW)
  • 🔐PRIVILEGED
    • Docker Escape
  • 📨Protokoller
    • ARP
    • DHCP
    • FTP
    • HTTP/HTTPS
    • SSH
    • TCP/IP
    • UDP
    • Wİ-Fİ Güvenlik Protokolleri (WEP/WPA/WPA2/WPA3)
  • 💻SİBER TEHDİT İSTİHBARATI
    • Gelişmiş Siber Tehdit İstihbaratı Nedir?
  • 🔒WEB GÜVENLİĞİ
    • 403 ByPass
    • API Güvenliği (API Security)
    • Broken Access Control
    • Bulut Güvenliği (Cloud Security)
    • Command Injection
    • Cross Origin Resource Sharing
    • Cross Site Request Forgery (CSRF)
    • Cyber Kill Chain
    • DDoS Saldırıları
    • File Upload Zafiyeti Nedir?
    • HTTP Request Smuggling
    • Insecure Direct Object Reference (IDOR)
    • Incident Response
    • Local File Inclusion (LFI)
    • NoSQL Injection
    • Pentest 101
    • Race Condition
    • Server Side Request Forgery (SSRF)
    • Server Side Template Injection (SSTI)
    • Spring4Shell
    • Two Factor Authentication Bypass
    • XML External Entity Attack (XEE)
  • 🤖YAPAY ZEKA
    • ChatGPT for Hacking
    • Siber Güvenlik ve Yapay Zeka
    • Yapay Zeka ile Sahte Fotoğraf Tespiti
  • 🌐YAZILIM
    • Düzenli İfadeler (Regular Expressions)
    • Elasticsearch Nedir?
    • Front-end Teknolojileri
    • Golang'da Arayüzler (Interfaces)
    • Go'da Concurrency ve Uygulamaları
    • Güvenli Kodlama (Secure Coding)
    • Java Overloading vs Overriding
    • JSON Web Token (JWT)
    • Material-UI
    • NextJS Nedir?
    • ReactJS Kancalar (Hooks)
    • ReactJS Nedir?
    • Redux Toolkit
    • SOLID Yazılım Geliştirme Prensipleri
    • SQL 101
    • UI / UX Nedir?
    • Veri Taşıma Nedir? (Database Migration)
    • Versiyon Kontrol Sistemleri ve GIT
  • 🔷DİĞER
    • Bug Bounty (Hata Ödülü) Nedir?
    • Popüler Yazılımların Kurulumları
      • Ubuntu Server 24.04 LTS Kurulumu
      • Ubuntu için Güncel Docker Engine Kurlumu
    • Güvenlik Operasyonları Merkezi Nedir?
    • Honeypot (Bal Küpü)
    • IoT Güvenliği Nedir?
    • ShellShock Exploit
    • Yük Dengeleyici (Load Balancer) Nedir?
Powered by GitBook
On this page
  • Overloading
  • Overriding
  • Overloading vs Overriding

Was this helpful?

  1. YAZILIM

Java Overloading vs Overriding

PreviousGüvenli Kodlama (Secure Coding)NextJSON Web Token (JWT)

Last updated 4 months ago

Was this helpful?

Overloading

Overloading(Yöntem Aşırı Yüklemesi), birden fazla method aynı method adını farklı bir imzayla(İmza metotların kendine has özellikleri bulunur ve bu özellikler Metot İmzası olarak adlandırılır.) class da paylaşır. Overloading'in, dönüş tipi aynı olabilir veya olmayabilir, ancak parametreyi değiştirmemiz gerekir çünkü Java'da yalnızca method dönüş tipini değiştirerek method overloading gibi birşey yoktur.

public class Main {
    public static class OverloadingExample {
        // Tek parametreli overloading yöntem
        public void display(int a) {
            System.out.println(a);
        }

        // İki parametreli overloading yöntem
        public void display(int a, int b) {
            System.out.println(a + " ve " + b);
        }

        // Farklı parametre tipine sahip overloading yöntem
        public void display(String a) {
            System.out.println(a);
        }

        public void main(String[] args) {
            OverloadingExample obj = new OverloadingExample();
            obj.display(10);         // İlk yöntemi çağırır: display(int a)
            obj.display(10, 20);     // İkinci yöntemi çağırır: display(int a, int b)
            obj.display("Hello");    // Üçüncü yöntemi çağırır: display(String a)
        }
    }
}

Örnekteki kodun çıktısı şu şekilde; 10 10 and 20 Hello

Bu örnekte display() yöntemi birden çok kez farklı imzalar kullanılarak tanımlanmıştır. Overloading (Aşırı yükleme) bize bir methodu kullanırken farklı parametrelerle kullanma imkanı sağlar. Bu sayede, aynı işlemi yapacak farklı parametre kombinasyonlarına sahip birden çok method tanımlamamıza gerek kalmaz.

Overriding

Overriding (Yöntem Geçersiz Kılma), bir sınıfın başka bir sınıftan miras aldığı metodları kendi içerisinde yeniden tanımlayarak kullanmasıdır. Daha anlaşılır bir şekilde ifade etmek gerekirse, bir sınıfın metodlarını başka bir sınıf aynı isimle tanımlayabilir ve kendi ihtiyaçları doğrultusunda yeniden oluşturabilir. Overriding, dönüş tipi aynı olmalı veya türetilmiş sınıfla aynı yönde değişebilir olmalıdır.

// Animal sınıfı
class Animal {
    // makeSound yöntemi
    public void makeSound() {
        System.out.println("The animal makes a sound");
    }
}

// Dog sınıfı, Animal sınıfından miras alır
class Dog extends Animal {
    // makeSound yöntemini geçersiz kılar
    @Override
    public void makeSound() {
        System.out.println("The dog barks");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal myAnimal = new Animal();  // Animal nesnesi oluşturur
        Animal myDog = new Dog();        // Dog nesnesi oluşturur ve Animal olarak işler

        myAnimal.makeSound(); // The animal makes a sound
        myDog.makeSound();    // The dog barks
    }
}

Örnekteki kodun çıktısı şu şekilde; The animal makes a sound The dog barks

Bu örnekte Dog classı makeSound() methodunu rverrid ederek Dog classı içinde yeniden tanımlamıştır. İki class da da aynı isimde method olmasına rağmen ikisi de birbirinden bağımsız çıktılar vermişlerdir.

Overloading vs Overriding

class Animal {
    public void makeSound() {
        System.out.println("The animal makes a sound");
    }

    public void makeSound(String sound) {
        System.out.println("The animal makes a sound: " + sound);
    }
}
class Dog extends Animal {
    // overridden
    @Override
    public void makeSound() {
        System.out.println("The dog barks");
    }

    // overloaded
    public void makeSound(int barkCount) {
        System.out.println("The dog barks " + barkCount + " times");
    }
}
public class Main {
    public static void main(String[] args) {
        Animal myAnimal = new Animal();
        Dog myDog = new Dog();
        myAnimal.makeSound();
        myAnimal.makeSound("meow");
        myDog.makeSound();
        myDog.makeSound(3);
        myDog.makeSound("loud bark");
    }
}

Bu örnekte hem overloading overriding bir arada görmekteyiz aradaki söz dizimi farkı açıkca gözükmekte. Overloading de, aynı method makeSound() farklı parametrelerle çağırılmışken, overriding ise aynı method makeSound() farklı classın içinde tekrar tanımlanmıştır.

Java'da Method Overloading ve Method Overriding arasındaki farkları şu tablo şeklinde gösterecek olursak

Method Overloading (Aşırı Yükleme)
Method Overriding (Geçersiz Kılma)

Method overloading derleme zamanı çok biçimliliğidir (compile-time polymorphism).

Method overriding çalışma zamanı çok biçimliliğidir (run-time polymorphism).

Method overloading, programın okunabilirliğini artırmaya yardımcı olur.

Method overriding, temel sınıf veya ebeveyn sınıf tarafından sağlanan yöntemin belirli bir uygulamasını sağlamak için kullanılır.

Sınıf içinde gerçekleşir.

Kalıtım ilişkileri olan iki sınıfta gerçekleştirilir.

Method overloading, kalıtım gerektirebilir veya gerektirmeyebilir.

Method overriding her zaman kalıtım gerektirir.

Method overloading'de, yöntemler aynı isme ve farklı imzalara sahip olmalıdır.

Method overriding'de, yöntemler aynı isme ve aynı imzaya sahip olmalıdır.

Method overloading'de, dönüş tipi aynı olabilir veya olmayabilir, ancak parametreyi değiştirmemiz yeterlidir.

Method overriding'de, dönüş tipi aynı veya co-variant olmalıdır.

Statik bağlama (static binding) aşırı yüklenmiş yöntemler için kullanılır.

Dinamik bağlama (dynamic binding) geçersiz kılınan yöntemler için kullanılır.

Derleme zamanı çok biçimliliğinden dolayı düşük performans sağlar.

Daha iyi performans sağlar. Bunun nedeni, geçersiz kılınan yöntemlerin çalışma zamanında bağlanmasıdır.

🌐
MKLKCDG - OverviewGitHub
Bu yazı Mikail KOCADAĞ tarafından hazırlanmıştır.
Logo