Berk Akademi
Ana Sayfa
ÖZEL KODLAMA DERSLERİ
Yazılım Özel Ders
Tüm birebir programlara genel bakış
Python Yazılım Kursu
Sıfırdan ileri seviyeye birebir Python
Java Yazılım Kursu
OOP odaklı birebir Java eğitimi
AP Computer Science Principles
AP CSP sınav hazırlığı
GRUP DERSLERİ
Python & Django Masterclass
SINIRLI KONTENJAN
Java & Spring Boot Masterclass
SINIRLI KONTENJAN
C# .NET Masterclass
SINIRLI KONTENJAN
VİDEO DERSLER
Sıfırdan Temel Python Kursu
Kendi Hızında Öğren
ÜCRETSİZ
Seviye Testi
Ücretsiz — Python, Java, algoritma seviye testleri
Kariyerini Keşfet
Sertifika Doğrula
Belge numarası ve soyad ile doğrulama

Java’da Metot Nasıl Yazılır ve Kullanılır?

javada-metot-nasil-yazilir-ve-kullanilir
Bu yazıda neler var?
  1. Java’da Metot Nedir ve Neden Kullanılır?
  2. Java Metot Söz Dizimi Nasıl Okunur?
  3. Parametresiz, Parametreli ve Değer Döndüren Metotlar
  4. Metot Nasıl Çağrılır? Parametre ve Return Kullanımı
  5. static Metot, Nesne Metodu ve Constructor Farkı
  6. Yaygın Metot Hataları ve Daha İyi Metot Tasarımı
  7. Method Overloading Nedir?
  8. Sık Sorulan Sorular

Java’da metot yazmak, belirli bir işi yapan adlandırılmış kod bloğunu sınıf içinde tanımlayıp gerektiğinde çağırmak anlamına gelir. Parametreler metoda dışarıdan veri göndermeyi, return ise metodun çağrıldığı yere sonuç iletmesini sağlar. Böylece kod tekrarı azalır, program daha okunabilir olur ve büyük problemler daha küçük parçalara ayrılabilir.

Örneğin toplam hesaplayan bir kodu her ihtiyaçta yeniden yazmak yerine bir kez metot olarak tanımlayabilirsiniz. Bu yazıda metot söz dizimini okuyacak; parametresiz, parametreli ve değer döndüren metotları çalışan örneklerle inceleyeceksiniz. Devamında static, nesne üzerinden çağrılan metotlar ve method overloading konularını da uygulayabileceğiniz bir temel oluşturacaksınız.

Java’da Metot Nedir ve Neden Kullanılır?

Metot (method), belirli bir görevi yerine getiren ve bir isim verilerek gerektiğinde çalıştırılabilen kod bloğudur. Örneğin ekrana mesaj yazdıran, iki sayıyı toplayan veya bir öğrencinin not ortalamasını hesaplayan işlemler metot içinde tanımlanabilir.

Java’da metotlar sınıfların içinde yazılır. Bir metodu tanımladığınızda kod hemen çalışmaz; metot ancak çağrıldığında (invoke edildiğinde) çalışır. Bu yaklaşım, aynı işlemi programın farklı yerlerinde kullanırken kodu tekrar tekrar yazmanızı önler.

Java terminolojisinde genellikle method kelimesi kullanılır. “Fonksiyon” (function) kelimesi ise farklı programlama dillerindeki benzer yapıları anlatmak için pratikte kullanılabilir. Başlangıç seviyesinde önemli olan ayrım şudur: Java’da bu davranışlar sınıf içinde tanımlandığı için teknik olarak metot olarak adlandırılır.

Bir metot kullanmanın temel faydaları şunlardır:

  • Kod tekrarını azaltır: Aynı işlemi tek bir yerde tanımlarsınız.
  • Programın okunabilirliğini artırır; toplamHesapla() gibi bir isim, kodun amacını açıklar.
  • Büyük bir problemi küçük ve yönetilebilir görevlere böler.
  • Hataları düzeltmeyi kolaylaştırır; değişiklik çoğunlukla tek bir metotta yapılır.
  • Test etmeyi kolaylaştırır; her metot belirli bir görev üzerinden ayrı ayrı kontrol edilebilir.

Metot yazmadan önce 5 maddelik karar kontrolü

  1. Bu metot yalnızca tek bir iş mi yapacak?
  2. İşlemi gerçekleştirmek için hangi girdiler gerçekten gerekli?
  3. Metodun dışarıya bir sonuç vermesi gerekiyor mu?
  4. Sonuç dönecekse bu sonuç hangi veri tipinde olmalı?
  5. Metot adı, yaptığı işi açıkça anlatıyor mu?

Bu kontrol, daha ilk aşamada gereksiz ve karmaşık metotlar yazmanızı önler. Örneğin yalnızca ekrana mesaj yazdıran bir metot için sonuç döndürmeye gerek yoktur; buna karşılık iki sayının toplamını başka bir işlemde kullanacaksanız sonuç döndüren bir metot daha uygundur.

Java Metot Söz Dizimi Nasıl Okunur?

Java Metot Söz Dizimi Nasıl Okunur?

Genel bir Java metodu aşağıdaki yapıya sahiptir:

erişimBelirleyici static geriDonusTipi metotAdi(parametreListesi) {
    // metot gövdesi
}

Bu şablonu soldan sağa okumak, bir metot başlığının ne yaptığını anlamanın en kolay yoludur:

  • Erişim belirleyici (access modifier): Metoda hangi kodların erişebileceğini belirler. Başlangıçta en sık public kullanılır. private ise metodu yalnızca tanımlandığı sınıf içinde erişilebilir yapar.
  • static anahtar kelimesi: Metodun sınıfa ait olduğunu belirtir. Bu kelime yazılmadığında metot genellikle bir nesne üzerinden çağrılır. Her metotta bulunması zorunlu değildir.
  • Geri dönüş tipi (return type): Metodun çağıran koda hangi türde sonuç vereceğini gösterir. Sonuç vermeyen metotlarda void yazılır; sonuç veren metotlarda int, double, String veya boolean gibi uygun bir tip seçilir.
  • Metot adı: Metodu çağırırken kullanacağınız isimdir. Java’da genellikle camelCase biçimi tercih edilir.
  • Parametre listesi (parameter list): Metodun dışarıdan alacağı verileri tanımlar. Birden fazla parametre virgülle ayrılır.
  • Metot gövdesi (method body): Süslü parantezler arasındaki bölüm, metodun gerçekleştireceği işlemleri içerir.

Parametre ve argüman farkı

Metot tanımında yazılan değişkene parametre denir. Metot çağrılırken bu parametreye gönderilen gerçek değere ise argüman adı verilir.

static int karesiniAl(int sayi) { // sayi: parametre
    return sayi * sayi;
}

int sonuc = karesiniAl(5); // 5: argüman

Metot adlarını seçerken eylem anlatan fiiller kullanın: mesajYazdir(), toplamHesapla(), ogrenciBul() gibi. İsimler kısa fakat açıklayıcı olmalı; islemYap() gibi ne yaptığı belirsiz adlardan kaçınılmalıdır.

Mini söz dizimi kontrolü: public static double ortalamaHesapla(int toplam, int adet) başlığında public erişimi, static sınıfa ait olmayı, double dönüş tipini, ortalamaHesapla metot adını, toplam ve adet ise parametreleri belirtir.

Parametresiz, Parametreli ve Değer Döndüren Metotlar

Metotları seçerken temel karar şudur: çıktı yoksa void, çıktı varsa uygun dönüş tipi kullanılır. Ayrıca metot dışarıdan bilgiye ihtiyaç duyuyorsa parametre alır.

Metot türü Parametre Geri dönüş tipi Ne zaman kullanılır? Kısa örnek amacı
Parametresiz void Yok void Sabit bir işlemi yapmak için Mesaj yazdırmak
Parametre alan void Var void Gelen veriyi kullanıp sonuç döndürmemek için İsme göre mesaj yazdırmak
Parametresiz değer döndüren Yok Uygun tip Sabit veya sınıf içindeki bir sonucu almak için Sabit puan döndürmek
Parametre alan değer döndüren Var Uygun tip Girdiyi işleyip sonucu başka yerde kullanmak için İki sayıyı toplamak

Aşağıdaki örnek, aynı “toplam alma” fikrini dört farklı metot biçimiyle gösterir:

public class MetotOrnekleri {
    static void mesajYazdir() {
        System.out.println("Toplam işlemi başlıyor.");
    }

    static void sayilariYazdir(int a, int b) {
        System.out.println(a + b);
    }

    static int sabitToplam() {
        return 10 + 20;
    }

    static int toplamHesapla(int a, int b) {
        return a + b;
    }

    public static void main(String[] args) {
        mesajYazdir();
        sayilariYazdir(3, 4);
        System.out.println(sabitToplam());
        System.out.println(toplamHesapla(5, 7));
    }
}

Beklenen çıktı şöyledir:

Toplam işlemi başlıyor.
7
30
12
  1. mesajYazdir() parametre almaz ve yalnızca ekrana yazı yazdırır.
  2. sayilariYazdir(3, 4) iki argüman alır, işlemi yapar fakat sonucu ayrıca döndürmez.
  3. sabitToplam() parametre almaz; hesapladığı int sonucu return ile gönderir.
  4. toplamHesapla(5, 7) aldığı iki değeri toplar ve sonucu çağrıldığı yerde kullanılabilir hâle getirir.

return ifadesi, metodun dönüş tipiyle uyumlu bir değer döndürmelidir. int döndüren bir metot metin, String döndüren bir metot ise doğrudan sayı döndüremez. Java’daki temel metot yapısını pekiştirmek için Java bilgi testi üzerinden hangi konuları tekrar etmeniz gerektiğini görebilirsiniz.

Metot Nasıl Çağrılır? Parametre ve Return Kullanımı

Java’da metot önce sınıf içinde tanımlanır, ardından ihtiyaç duyulduğunda çağrılır (invoke). Parametre metoda dışarıdan bilgi gönderir; return ise metodun ürettiği değeri çağıran koda geri verir. Bu nedenle metot tanımlamak davranışı hazırlamak, metot çağırmak ise o davranışı çalıştırmaktır.

  1. Metodu sınıf içinde tanımlayın.
  2. main metodundan metodun adını yazıp çağırın.
  3. Gerekliyse argüman gönderin.
  4. Dönen değeri bir değişkende saklayın.
  5. Sonucu yazdırın veya başka bir işlemde kullanın.
public class Main {
    static void selamla(String isim) {
        System.out.println("Merhaba, " + isim);
    }

    static int topla(int a, int b) {
        return a + b;
    }

    public static void main(String[] args) {
        selamla("Ayşe");
        int sonuc = topla(4, 6);
        System.out.println("Toplam: " + sonuc);
    }
}

Bu programın çıktısı şöyledir:

Merhaba, Ayşe
Toplam: 10

selamla(String isim) satırındaki isim parametredir. selamla("Ayşe") çağrısında gönderilen "Ayşe" ise argümandır. topla(int a, int b) içinde a ve b parametre, topla(4, 6) içinde 4 ve 6 argümandır. return a + b; satırı, hesaplanan değeri metoda çağrı yapan yere gönderir.

void metot değer döndürmez; bu yüzden yalnızca çağrılır: selamla("Ayşe");. Değer döndüren metot ise değişkene atanabilir: int sonuc = topla(4, 6);. Dönen değeri doğrudan da kullanabilirsiniz: System.out.println(topla(4, 6));. Ancak değeri daha sonra kullanacaksanız değişkende saklamak daha okunaklıdır.

Java’da metot çağırma ve temel kod akışını kendi hızınızda pekiştirmek için asenkron Java eğitim içeriklerinden yararlanabilir, örnekleri durdurarak tekrar çalıştırabilirsiniz.

static Metot, Nesne Metodu ve Constructor Farkı

static Metot, Nesne Metodu ve Constructor Farkı

static metot sınıfa aittir ve sınıf adıyla çağrılabilir. Instance metot ise belirli bir nesneye aittir; kullanmadan önce o sınıftan nesne oluşturmanız gerekir.

Yapı Çağırma biçimi Temel ilişki
static metot SinifAdi.metot() Sınıfa aittir
Instance metot nesne.metot() Nesneye aittir
Constructor new SinifAdi() Nesne oluştururken çalışır
class Ogrenci {
    String ad;

    Ogrenci(String ad) {
        this.ad = ad;
    }

    static void bilgiVer() {
        System.out.println("Öğrenci sınıfı");
    }

    void selamla() {
        System.out.println("Merhaba, " + ad);
    }
}

class Main {
    public static void main(String[] args) {
        Ogrenci.bilgiVer();
        Ogrenci ogrenci = new Ogrenci("Ali");
        ogrenci.selamla();
    }
}

Ogrenci.bilgiVer() için nesne gerekmez. Buna karşılık selamla(), ad alanını kullandığı için önce ogrenci nesnesi oluşturulur. Static bağlamda instance alanlarına veya instance metotlarına doğrudan erişilememesinin nedeni budur: nesneye bağlı üyelerin çalışacağı bir nesne bulunmalıdır.

Constructor, nesne oluşturulurken çalışan, sınıfla aynı adı taşıyan ve dönüş tipi yazılmayan özel yapıdır. Metot ise çağrıldığında belirli bir davranışı gerçekleştirir ve gerekirse değer döndürür. Kısaca şu soruyu sorun: Davranış tüm sınıf için mi ortak, yoksa belirli bir nesnenin verilerine mi bağlı? İlk durumda static, ikinci durumda instance metot düşünülür.

Yaygın Metot Hataları ve Daha İyi Metot Tasarımı

Eksik return: int hesapla() { } hatalıdır; dönüş tipi int olduğu için her geçerli akışta sayı döndürülmelidir. Düzeltme: return 0; veya hesaplanan sonucu döndürmek.

Yanlış argüman tipi: topla(4, "6") çağrısı, ikinci parametre int beklenirken metin gönderdiği için derlenmez. Düzeltme: topla(4, 6) kullanmaktır.

Nesnesiz instance çağrısı: main içinden selamla() çağırmak, metot instance ise hatalıdır. Önce Ogrenci o = new Ogrenci("Ali"); oluşturup o.selamla(); yazılmalıdır.

Yanlış sınıfta tanımlama: Bir metot başka sınıfta bulunuyorsa, mevcut sınıftan doğrudan çağrılamaz. Metodu doğru sınıfa taşımalı veya ilgili sınıftan nesne oluşturup çağırmalısınız.

Bir metot yazmadan önce

  1. Metot tek bir işi mi yapıyor?
  2. Hangi girdilere ihtiyaç duyuyor?
  3. Çıktı üretiyor mu?
  4. Adı yaptığı işi açıkça anlatıyor mu?
  5. Bağımsız olarak test edilebilir mi?

İyi adlandırılmış ve küçük metotlar algoritmayı adımlara ayırmayı, kodu test etmeyi ve nesne yönelimli programlamada davranışları sınıflandırmayı kolaylaştırır. Temel kavramlarınızı ölçmek için ücretsiz Java bilgi testini çözerek hangi konuları tekrar etmeniz gerektiğini görebilirsiniz.

Method Overloading Nedir?

Method overloading, aynı sınıf içinde aynı isimli metotların farklı parametre listeleriyle tanımlanabilmesidir. Java, metot çağrılırken gönderilen argümanların sayısına, sırasına ve türüne bakarak uygun metodu seçer. Böylece benzer işi yapan metotlar için farklı isimler ezberlemek gerekmez.

Bir metodun imzası (method signature), temel olarak metot adı ile parametrelerinin sayısını, sırasını ve türlerini kapsar. Yalnızca geri dönüş tipinin değiştirilmesi overloading için yeterli değildir.

Metotlar Overloading durumu Neden?
yazdir(String) ve yazdir(String, int) Evet Parametre sayısı farklıdır.
topla(int, int) ve topla(double, double) Evet Parametre türleri farklıdır.
hesapla(int) ve farklı return tipiyle hesapla(int) Hayır Parametre listesi aynıdır.
public class Ornek {
    static void yazdir(String mesaj) {
        System.out.println(mesaj);
    }

    static void yazdir(String mesaj, int tekrar) {
        for (int i = 0; i < tekrar; i++) {
            System.out.println(mesaj);
        }
    }

    public static void main(String[] args) {
        yazdir("Merhaba");
        yazdir("Java", 2);
    }
}

Bu programın beklenen çıktısı şöyledir:

Merhaba
Java
Java

İlk çağrıda tek bir String argümanı gönderildiği için yazdir(String) çalışır. İkinci çağrıda ise bir String ve bir int bulunduğundan yazdir(String, int) seçilir.

Overloading Kullanırken Nelere Dikkat Edilmeli?

  1. Metotların aynı işi farklı girdilerle yapıp yapmadığını kontrol edin.
  2. Parametre sayısı, sırası veya türlerinden en az birinin farklı olduğundan emin olun.
  3. Sadece return tipini değiştirerek aynı metodu tekrar tanımlamayın.
  4. Birbirine çok benzeyen ve Java’nın ayırt etmekte zorlanabileceği çağrılardan kaçının.
  5. Overload sayısını artırırken kodun okunabilirliğini koruyun.

Overloading, aynı davranışı gereksiz yere çoğaltmak anlamına gelmez. Örneğin yalnızca değişken adları farklı olan iki metot yazmak gereksizdir. Ama bir metot hem yalnızca mesaj alıyor hem de mesajla birlikte tekrar sayısı alıyorsa, bu iki kullanım biçimini aynı metot adı altında sunmak anlamlı bir tasarım olabilir.

Sık Sorulan Sorular

Java’da bir metot mutlaka static olmak zorunda mı?

Hayır. static metotlar sınıf adı üzerinden çağrılabilir. Nesneye ait davranışları temsil eden metotlar ise bir nesne oluşturularak çağrılır.

Parametre ile argüman arasındaki fark nedir?

Parametre, metot tanımında yazılan değişkendir. Argüman ise metot çağrılırken bu parametreye gönderilen gerçek değerdir.

void metot ile değer döndüren metot arasındaki fark nedir?

void metot bir sonuç döndürmez; genellikle ekrana yazdırma gibi bir işlem yapar. Değer döndüren metot ise belirli bir türde sonuç verir ve return kullanır.

Java’da yalnızca return tipini değiştirerek method overloading yapılabilir mi?

Hayır. Overloading için parametre sayısı, sırası veya türlerinden en az biri farklı olmalıdır. Yalnızca geri dönüş tipini değiştirmek yeterli değildir.

Bir metot yanlış sınıfta tanımlanırsa hangi sorunlar ortaya çıkar?

Metoda erişmek zorlaşabilir, gereksiz nesne bağımlılığı oluşabilir veya kodun sorumlulukları karışabilir. Metot, yaptığı işle ilgili sınıfta ve anlaşılır bir sorumlulukla tanımlanmalıdır.

Doğru kullanılan overloading, benzer işlemleri anlaşılır bir isim altında toplar; gereksiz kullanıldığında ise kodun okunmasını zorlaştırır.

Bu içerik aradığın cevabı verdi mi?
Yanıtın, hangi yazıları geliştirmemiz gerektiğini anlamamıza yardımcı olur.
Bu içeriğin üretilmesinde yapay zeka araçlarından destek alınmıştır.

Bu konudan sonra ne okuyabilirsin?

Tüm yazılar

İlgili Eğitimler

Berk Keskin — Yazılım Geliştirici ve Eğitmen
Yazar

Berk Keskin Kimdir?

Yazılıma 12 yaşında başladı; bugün öğrencinin seviyesine ve hedefine göre şekillenen sürdürülebilir öğrenme sistemleri tasarlıyor. 500'den fazla kişiye ezber değil, düşünerek kod yazmayı öğretti — Berk Akademi'de izlemeye değil üretmeye dayalı öğrenme kültürünü o kuruyor.

WhatsApp Hemen Ara