Hoş geldin

Tüm özelliklerimize erişmek için şimdi bize katılın. Kayıt olduktan ve giriş yaptıktan sonra, konular oluşturabilir, mevcut mesajlara cevap yazabilir, diğer üyelerinize itibar edebilir, kendi özel mesajınızı alabilir ve çok daha fazlasını yapabilirsiniz. Ayrıca hızlı ve tamamen ücretsiz, bu yüzden ne bekliyorsunuz?

java'da aşırı yüklenme

GöKKurT

SAHİB-KIRAN
Yönetici
Katılım
19 Haz 2018
Mesajlar
436
Beğeniler
282
Konum
ANGARA
#1
[ATTACH=full]249[/ATTACH]

merhaba arkadaşlar ben GöKKurT bugün sizlere Java'da aşırı yükleme adlı konumu suncağım umarım yararlı olur.
Aşırı yükleme, farklı yöntemlerin aynı ada sahip olmasına izin verir, ancak imzanın giriş parametrelerinin sayısına veya giriş parametrelerinin türüne veya her ikisine göre farklılık gösterebileceği farklı imzalar. Aşırı yükleme, derleme zamanı (veya statik) polimorfizmiyle ilgilidir.


[ATTACH=full]244[/ATTACH]

Java:
// Java program to demonstrate working of method
// overloading in Java.

public class Sum {

    // Overloaded sum(). This sum takes two int parameters
    public int sum(int x, int y)
    {
        return (x + y);
    }

    // Overloaded sum(). This sum takes three int parameters
    public int sum(int x, int y, int z)
    {
        return (x + y + z);
    }

    // Overloaded sum(). This sum takes two double parameters
    public double sum(double x, double y)
    {
        return (x + y);
    }

    // Driver code
    public static void main(String args[])
    {
        Sum s = new Sum();
        System.out.println(s.sum(10, 20));
        System.out.println(s.sum(10, 20, 30));
        System.out.println(s.sum(10.5, 20.5));
    }
}
[ATTACH=full]245[/ATTACH]
30
60
31.0
Avantajı nedir?
Aynı şeyi yapan fonksiyonlar için farklı isimler yaratmak ve hatırlamak zorunda değiliz. Örneğin kodumuzda, Java tarafından aşırı yüklenme desteklenmediyse, sum1, sum2,… veya sum2Int, sum3Int,… vb. Gibi yöntem isimleri oluşturmamız gerekir.


Dönüş türünde aşırı yükleme yapabilir miyiz?
Biz olamaz dönüş türüne göre aşırı. Bu davranış C ++ 'da aynıdır.


Java:
public class Main {
    public int foo() { return 10; }

    // compiler error: foo() is already defined
    public char foo() { return 'a'; }

    public static void main(String args[])
    {
    }
}
Bununla birlikte, çağrılan işlevin veri tipinin açıkça belirtildiği durumlarda, dönüş türünde aşırı yükleme yöntemleri mümkündür. Aşağıdaki örneklere bakın:

[ATTACH=full]246[/ATTACH]

Java:
// Java program to demonstrate working of method
// overloading in static methods
public class Main {

    public static int foo(int a) { return 10; }
    public static char foo(int a, int b) { return 'a'; }

    public static void main(String args[])
    {
        System.out.println(foo(1));
        System.out.println(foo(1, 2));
    }
}
10
bir
Java:
// Java program to demonstrate working of method
// overloading in  methods
class A {
    public int foo(int a) { return 10; }

    public char foo(int a, int b) { return 'a'; }
}

public class Main {

    public static void main(String args[])
    {
        A a = new A();
        System.out.println(a.foo(1));
        System.out.println(a.foo(1, 2));
    }
}

10
bir
Statik yöntemleri aşırı yükleyebilir miyiz?
Cevap ' Evet '. Aynı ada sahip iki cevher daha statik yöntemimiz olabilir, ancak giriş parametrelerindeki farklılıklar olabilir. Örneğin, aşağıdaki Java programını düşünün. Bakınız bu detaylar için.


Sadece statik anahtar kelimelerle farklılık gösteren yöntemleri fazla yükleyebilir miyiz?
Biz olamaz statik anahtar kelimeye göre sadece farklı ise Java iki yöntemi aşırı (parametrelerin parametreleri ve türlerinin sayısı aynıdır). Örneğin, aşağıdaki Java programına bakınız. Bakınız bu detaylar için.


Java'da main () yükleyebilir miyiz?
Diğer statik yöntemler gibi, Java'daki main () yükleyebiliriz . Daha fazla ayrıntı için Java'daki aşırı yükleme ana () bölümüne bakın.


[ATTACH=full]247[/ATTACH]

Java:
// A Java program with overloaded main()
import java.io.*;

public class Test {

    // Normal main()
    public static void main(String[] args)
    {
        System.out.println("merhaba(from main)");
        Test.main("merhaba");
    }

    // Overloaded main methods
    public static void main(String arg1)
    {
        System.out.println("selam, " + arg1);
        Test.main("sayın", "merhaba");
    }
    public static void main(String arg1, String arg2)
    {
        System.out.println("merhaba, " + arg1 + ", " + arg2);
    }
}

Merhaba (ana kaynaktan)
merhabalar
Selam Sevgili merhaba
Java, Operatör Aşırı Yüklemeyi destekliyor mu?
C ++ 'dan farklı olarak, Java kullanıcı tanımlı aşırı yüklenmiş operatörlere izin vermez. Dahili Java operatörleri aşırı yükler, örneğin + birleştirme için aşırı yüklenir.


Aşırı yükleme ve Geçersiz Kılma arasındaki fark nedir ?

Aşırı yükleme, aynı işlevin farklı imzalara sahip olmasıyla ilgilidir. Geçersiz kılma, aynı işlev, aynı imza, ancak miras yoluyla bağlanan farklı sınıflar hakkındadır.
OverridingVsOverloading
Aşırı yükleme, derleyici zaman polimorfizminin bir örneğidir ve geçersiz kılma, çalışma zamanı polimorfizminin bir örneğidir.
[ATTACH=full]248[/ATTACH]

 
Son düzenleme: