Başlangıç Durumuna Getirme İşlemi Ve Yapılandırıcılar (ınitialization And Contructor)
class KahveFincani
{
public KahveFincani() //nesne ile aynı isimdeki fonksiyonun geri donus degeri belirtmesine gerek yoktur. Nesne olusturulunca fonksiyonda calisir.
{
System.out.println("KahveFincani...");
}
public void FincanAlti()
{
System.out.println("KahveFincani Alti...");
}
}
public class YapilandirciBasitOrnek
{
public static void main(String[] args)
{
for (int i = 0; i < 5; i++)
new KahveFincani(); //Her yeni KahveFincani nesnesi oluşturulduğunda nesneye ait aynı isimdeki fonksiyon calisir.
}
}
{
public KahveFincani() //nesne ile aynı isimdeki fonksiyonun geri donus degeri belirtmesine gerek yoktur. Nesne olusturulunca fonksiyonda calisir.
{
System.out.println("KahveFincani...");
}
public void FincanAlti()
{
System.out.println("KahveFincani Alti...");
}
}
public class YapilandirciBasitOrnek
{
public static void main(String[] args)
{
for (int i = 0; i < 5; i++)
new KahveFincani(); //Her yeni KahveFincani nesnesi oluşturulduğunda nesneye ait aynı isimdeki fonksiyon calisir.
}
}
Bir İsmin Birden Çok Yordam İçin Kullanılması Adaş Yordamlar
Fonksiyona gönderdiğiniz degere göre aynı isimdeki fonksiyonların hangisinin kullanılacağını java biliyor. Yani bir işelmi yapmak için geliştirilmiş farklı içerikli ama aynı isimdeki fonksiyonlardan hangisi gelen parametreye uygunsa o değerlendiriliyor.
class MuzikDosyasi {
String m_tur = "Muzik Dosyasi" ;
}
class ResimDosyasi {
String r_tur = "Resim Dosyasi" ;
}
class TextDosyasi {
String t_tur = "Text Dosyasi" ;
}
public class YordamOverloadingDemo1 {
public void dosyaAc(MuzikDosyasi md) {
System.out.println( "Tur =" + md.m_tur );
}
public void dosyaAc(ResimDosyasi rd) {
System.out.println( "Tur =" + rd.r_tur );
}
public void dosyaAc(TextDosyasi td) {
System.out.println( "Tur =" + td.t_tur );
}
public static void main(String[] args) {
YordamOverloadingDemo1 mod1 = new YordamOverloadingDemo1(); //ana classtan bir ornek turet
MuzikDosyasi md = new MuzikDosyasi(); // MuzikDosyasi classından bir ornek turet
ResimDosyasi rd = new ResimDosyasi(); // ResimDosyasi classından bir ornek turet
TextDosyasi td = new TextDosyasi(); // TextDosyasi classından bir ornek turet
mod1.dosyaAc(md); //md degeri MuzikDosyasi nesnesinden olduğu için mod.dosyaAc fonksiyonu 1. fonksiyon olarak işlem gorecektir.
mod1.dosyaAc(rd); //rd degeri MuzikDosyasi nesnesinden olduğu için mod.dosyaAc fonksiyonu 2. fonksiyon olarak işlem gorecektir.
mod1.dosyaAc(td); //td degeri MuzikDosyasi nesnesinden olduğu için mod.dosyaAc fonksiyonu 3. fonksiyon olarak işlem gorecektir.
}
}
public class YordamOverloadingDemo2
{
public int toplamaYap(int a, int b)
{
int sonuc = a + b;
System.out.println("sonuc - 1 = " + sonuc);
return sonuc;
}
public void toplamaYap(int a, double b)
{
double sonuc = a + b;
System.out.println("sonuc - 2 = " + sonuc);
}
public double toplamaYap(double a, int b)
{
double sonuc = a + b;
System.out.println("sonuc - 3= " + sonuc);
return sonuc;
}
public static void main(String[] args)
{
YordamOverloadingDemo2 mod2 = new YordamOverloadingDemo2();
mod2.toplamaYap(3, 4); // toplamaYap fonksiyonundan hangisinin parametreleri int int 'sa o işlemi yapar
mod2.toplamaYap(3, 5.5); // toplamaYap fonksiyonundan hangisinin parametreleri int double 'sa o işlemi yapar
mod2.toplamaYap(6.8, 4); // toplamaYap fonksiyonundan hangisinin parametreleri double int 'sa o işlemi yapar
}
}
{
public int toplamaYap(int a, int b)
{
int sonuc = a + b;
System.out.println("sonuc - 1 = " + sonuc);
return sonuc;
}
public void toplamaYap(int a, double b)
{
double sonuc = a + b;
System.out.println("sonuc - 2 = " + sonuc);
}
public double toplamaYap(double a, int b)
{
double sonuc = a + b;
System.out.println("sonuc - 3= " + sonuc);
return sonuc;
}
public static void main(String[] args)
{
YordamOverloadingDemo2 mod2 = new YordamOverloadingDemo2();
mod2.toplamaYap(3, 4); // toplamaYap fonksiyonundan hangisinin parametreleri int int 'sa o işlemi yapar
mod2.toplamaYap(3, 5.5); // toplamaYap fonksiyonundan hangisinin parametreleri int double 'sa o işlemi yapar
mod2.toplamaYap(6.8, 4); // toplamaYap fonksiyonundan hangisinin parametreleri double int 'sa o işlemi yapar
}
}
Bir başka örnek
public class AsiriYukleme
{
public int OrtakFonksiyon(int Sayi)
{
return Sayi * Sayi;
}
public String OrtakFonksiyon(String Metin)
{
return Metin + Metin;
}
public String OrtakFonksiyon(String Metin, int Sayi)
{
String Bileske="";
for (int i = 0; i < Sayi; i++)
{
Bileske += Metin;
}
return Bileske;
}
public void OrtakFonksiyon()
{
System.out.println("Sistem Kapaniyor...");
System.exit(-1);
}
public static void main(String[] args)
{
AsiriYukleme Turemis = new AsiriYukleme();
System.out.println(Turemis.OrtakFonksiyon(5));
System.out.println(Turemis.OrtakFonksiyon("Test"));
System.out.println(Turemis.OrtakFonksiyon("Test", 5));
Turemis.OrtakFonksiyon();
}
}
{
public int OrtakFonksiyon(int Sayi)
{
return Sayi * Sayi;
}
public String OrtakFonksiyon(String Metin)
{
return Metin + Metin;
}
public String OrtakFonksiyon(String Metin, int Sayi)
{
String Bileske="";
for (int i = 0; i < Sayi; i++)
{
Bileske += Metin;
}
return Bileske;
}
public void OrtakFonksiyon()
{
System.out.println("Sistem Kapaniyor...");
System.exit(-1);
}
public static void main(String[] args)
{
AsiriYukleme Turemis = new AsiriYukleme();
System.out.println(Turemis.OrtakFonksiyon(5));
System.out.println(Turemis.OrtakFonksiyon("Test"));
System.out.println(Turemis.OrtakFonksiyon("Test", 5));
Turemis.OrtakFonksiyon();
}
}
Bir başka örnek daha
import java.util.Random;
class rastgelsin
{
void rastgele(String metin)
{
System.out.print("nnntek parametreli yapilandirici void : ");
for (int i = 0; i < metin.length(); i++)
{
//rastgele sayı üretimi
Random say = new Random();
//metin uzunluğu sınırında rastgele üretilmiş sayı referansı
int s = say.nextInt(metin.length());
//metin içinden rastgele basma - s noktasındaki karakter
System.out.print(metin.charAt(s));
}
System.out.println("");
}
void rastgele(int sayi)
{
System.out.print("ninteger yapilandiricili void : ");
int toplam = 0;
String k = Integer.toString(sayi);
for (int i = 0; i < k.length(); i++)
{
toplam+=Integer.parseInt(String.valueOf(k.charAt(i)));
}
System.out.println(toplam);
}
void rastgele(String metin, int miktar)
{
System.out.println("ncift parametreli void : ");
for (int i = 0; i < miktar; i++)
{
System.out.println(i+1 + ". kez: " + metin);
}
}
}
public class rand
{
public static void main(String args[])
{
rastgelsin a = new rastgelsin();
a.rastgele("baturay"); //ekran rastgele baturay harfleriyle doluyor
a.rastgele(12); // rakamlar toplamıyla doluyor
a.rastgele("aboo", 3); //rakam kadar ekrana stringi yazar
}
}
class rastgelsin
{
void rastgele(String metin)
{
System.out.print("nnntek parametreli yapilandirici void : ");
for (int i = 0; i < metin.length(); i++)
{
//rastgele sayı üretimi
Random say = new Random();
//metin uzunluğu sınırında rastgele üretilmiş sayı referansı
int s = say.nextInt(metin.length());
//metin içinden rastgele basma - s noktasındaki karakter
System.out.print(metin.charAt(s));
}
System.out.println("");
}
void rastgele(int sayi)
{
System.out.print("ninteger yapilandiricili void : ");
int toplam = 0;
String k = Integer.toString(sayi);
for (int i = 0; i < k.length(); i++)
{
toplam+=Integer.parseInt(String.valueOf(k.charAt(i)));
}
System.out.println(toplam);
}
void rastgele(String metin, int miktar)
{
System.out.println("ncift parametreli void : ");
for (int i = 0; i < miktar; i++)
{
System.out.println(i+1 + ". kez: " + metin);
}
}
}
public class rand
{
public static void main(String args[])
{
rastgelsin a = new rastgelsin();
a.rastgele("baturay"); //ekran rastgele baturay harfleriyle doluyor
a.rastgele(12); // rakamlar toplamıyla doluyor
a.rastgele("aboo", 3); //rakam kadar ekrana stringi yazar
}
}
Bu örnekte Araba Nesnemiz ile bu nesne içerisindeki Nesne ile aynı isimdeki iki fonksiyondan, Nesne türetilirken çağrılan fonksiyon parametresi uygun olan fonksiyon olacaktır. Aşağıdaki örnekte hata olarak belirtilen satırdaki fonksiyon Nesne içerisindeki fonksiyonlardan argümanları itibari ile hiç birisine uymamaktadır.
class Araba
{
int kapi_sayisi;
int vites_sayisi;
public Araba(int adet)
{
kapi_sayisi = adet;
}
public Araba(int adet, int sayi)
{
kapi_sayisi = adet;
vites_sayisi = sayi;
}
}
public class VarsayilanYapilandiriciVersiyon2
{
public static void main(String[] args)
{
Araba ar = new Araba(); // ! Hata var! Çünkü bu parametresiz Araba Fonksiyonu Nesne içerisinde yoktur.
Araba ar1 = new Araba(2);
Araba ar2 = new Araba(4, 5);
}
}
{
int kapi_sayisi;
int vites_sayisi;
public Araba(int adet)
{
kapi_sayisi = adet;
}
public Araba(int adet, int sayi)
{
kapi_sayisi = adet;
vites_sayisi = sayi;
}
}
public class VarsayilanYapilandiriciVersiyon2
{
public static void main(String[] args)
{
Araba ar = new Araba(); // ! Hata var! Çünkü bu parametresiz Araba Fonksiyonu Nesne içerisinde yoktur.
Araba ar1 = new Araba(2);
Araba ar2 = new Araba(4, 5);
}
}
Yorumunuzu Ekleyin