Java metodlarının anlamı

yardımgerekli66

Centipat
Katılım
20 Kasım 2019
Mesajlar
22
Arkadaşlar aşağıdaki Java'da kullanılan bazı kodların anlamlarını yazdım doğru mu? Değilse doğrusunu söyleyebilir misiniz?
Final class (türetilmesini engeller.)
This (ifadeyi döndürür)
Return (metot'dan çıkılır)
Public Void (her koda erişilebilir.)
Ayriyeten private int-string (metotlar sadece aynı sınıf için kullanılır)
 
Son düzenleyen: Moderatör:
this, class içindeki veriyi temsil eder.

Java:
int age; // age 1
public void setAge(int age) // age 2
{
    this.age = age;
    // this: class'ın age'sini yani age 1'i temsil eder
    // normal age ise, kendine en yakın olani, method içi age'yi temsil eder
}

return için öyle de diyebiliriz.

public, private, protected ve default olarak ayrılır.
  • private: class dışı erişilmesini engeller.
  • protected: aile ici erişim yapar. Bkz: Polymorphism
  • public:her türetilmiş class'tan erişilir yapar.
  • default (yani normal, boş hali): Package içi public, package dışı private.
private int-String, erişimi engellenmiş olduğu için, evet dediğin. doğru.
 
İki tür method vardır, return type'ı olan methodlar ve return type'ı olmayan (void) methodlar. Return type'ı olan methodlar olayın sonunda size o methodu hangi type'dan tanımladıysanız (int, byte, long short String...) o type'da bir değer vermek zorundadır yoksa syntax error alırsınız. Void method ise bir değer vermez ve genelde bir iş yapar. Örneğin ekrana bir şey basarken System.out.print(); dediğiniz zaman System class'ının out object'inin void return type'lı print methodunu invoke edersiniz ve bu method size bir değer dönmez, verdiğiniz parametreleri ekrana basma işini yapar. Return'un görevi methodun başından return'e kadar olan kodu execute ettikten sonra neyi return etmesini istediyseniz methodun dönütü olarak size onu methodun kendi return type'ında vermektir ve returnden methodun sonuna kadar olan kodu ihmal (omit) eder. Eğer return edeceği değer return type'dan farklıysa ve auto type cast edilemiyorsa ve siz de bunu manuel olarak yapmadıysanız yine syntax error alırsınız. Void methodda return type olmadığı için, size bir değer dönmeyeceği için sadece kalan kodu ihmal eder ve methodu bitirir.

Final ise constant tanımlarken kullanılır ve final ile initialize ettiğiniz bir constant'ı variable gibi değiştiremezsiniz.

This keyword'unu method içinde variable'a refer ederken kullanabilirsiniz. Kendisi methodun ait olduğu object'i kast eder. Mesela obj diye bir objectimiz ve "x" diye bir variable'ımız olsun. Bunu method içinden değiştirirken zaten method obj'e ait olduğu için hangi variable'ın hangi object'e ait olduğunu göstermemiz gerekmez ve direkt "this" kullanabiliriz.
public int setX()
{
this.x = x+1
return x;
}
Burada method obj object'inin x variable'ını bir arttırır. Burada obj.x yerine direkt this.x diyebiliriz ve ikisi aynı anlama gelir. Ama method içinde olduğu için object belirtmeseniz de java hangi object olduğunu anlar yine de. Kullanıp kullanmamak size kalmış.

Public ve private arasındaki fark ise şudur: Diyelim ki biri main methoda sahip olmak üzere aynı directory'de iki class'ımız olsun. Class içerisinde methodun dışında tanımlanan variable'lara "instance variable" denir. O class'tan tanımlanan her object o variable'ın o object'e ait türüne sahiptir.

aynı class'a ait obj1, obj2, ve obj3 isimli 3 objemiz olsun. Bir de x instance variable'ımız olsun. Bunların objelerin hepsi obj1.x, obj2.x ve obj3.x şeklinde "x" variable'ına sahiptir ve bu üç variable birbirinden tamamen bağımsızdır.

Eğer siz bu instance variable'ı initialize ederken public olarak initialize ederseniz içinde main method bulunan diğer class'tan bu variable'ı obj1.x = obj1.x + 1; şeklinde değiştirebilirsiniz yani variable'a class dışından erişebilirsiniz. Ama eğer private olarak initialize ederseniz bu variable'ı değiştirmek için variable ile aynı class'a ait bir "public" methoda ihtiyacınız olacaktır. Yani dışarıdaki bir class'tan variable'a erişemeyeceksiniz ama variable'a erişimi olan bir methoda class dışından erişiminiz olduğu için değiştirebilirsiniz. Sadece direkt olarak class dışından refer edemezsiniz. Mangaldaki köfteyi maşayla çeviriyormuşsunuz gibi düşünün. Direkt elinizle çevirmeye kalkarsanız yanarsınız. Yani public ve private modifier'ları sadece başına geldiği şeye class dışından erişilip erişilemeyeceğini belirler. Eğer methodu private yaparsanız class dışından methodu çağıramazsınız mesela.
 
Son düzenleme:
İki tür method vardır, return type'ı olan methodlar ve return type'ı olmayan (void) methodlar. Return type'ı olan methodlar olayın sonunda size o methodu hangi type'dan tanımladıysanız (int, byte, long short String...) o type'da bir değer vermek zorundadır yoksa syntax error alırsınız. Void method ise bir değer vermez ve genelde bir iş yapar. Örneğin ekrana bir şey basarken System.out.print(); dediğiniz zaman System class'ının out object'inin void return type'lı print methodunu invoke edersiniz ve bu method size bir değer dönmez, verdiğiniz parametreleri ekrana basma işini yapar. Return'un görevi methodun başından return'e kadar olan kodu execute ettikten sonra neyi return etmesini istediyseniz methodun dönütü olarak size onu methodun kendi return type'ında vermektir ve returnden methodun sonuna kadar olan kodu ihmal (omit) eder. Eğer return edeceği değer return type'dan farklıysa ve auto type cast edilemiyorsa ve siz de bunu manuel olarak yapmadıysanız yine syntax error alırsınız. Void methodda return type olmadığı için, size bir değer dönmeyeceği için sadece kalan kodu ihmal eder ve methodu bitirir.
Türkçeleştirme yapacak olursak geriye değer döndüren ve döndürmeyen merodlar diyebiliriz sanırım. :)
 
Türkçeleştirme yapacak olursak geriye değer döndüren ve döndürmeyen merodlar diyebiliriz sanırım. :)

Hocam geriye dönme dersek yanlış anlaşılabilir aslında ama evet yanlış bir tanım değil. Geriye dönme yerine değer veren/vermeyen dersek belki daha kolay anlaşılabilir.
 
Uyarı! Bu konu 6 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı