Java’da yapıcı (Constructors) metotlarda bilmemiz gereken ilk şey; görmeseniz de oluşturduğunuz her sınıfın görünmeyen bir yapıcı (Constructor) metodu olduğudur. Java’da yapıcı metotlara örnek vermemiz gerekirse; bir kapı düşünelim. Bu kapı sınıfımızın içerisinde bazı sınıf değişkenlerine (uzunluk, genişlik ve ağaç türü) sahip olacaktır. Ancak sınıfımızın nesnesi, ölçütü veya özellikleri atanmadığı, belirtilmediği için bu kapı nesnesi var olamaz. Bundan dolayı yapıcı (Constructor) metotlar, nesne oluşturma sırasında sınıfımızın içerisindeki değişkenlerimize değer atamak için kullanılır. Bu yapıcı (Constructor) metotlar, Java’da metotlara benzemektedir, ama bazı farklı özellikleri vardır.
Java’da Yapıcı (Constructor) Metotların Özellikleri
- Java’da yapıcı metotların adı, sınıf adı ile aynı olmak zorundadır.
- Yapıcı metotlar, geriye değer döndürmezler.
- Yapıcı metotlar aşırı yüklenebilir.
Java’da yapıcı metotların genel kullanım yapısı:
1 2 3 4 5 6 | class ornek { ornek () { // yapıcı metot işlemleri } } |
Genel kullanım yapısında ornek() bir yapıcı metotdur.
Yapıcı (Constructor) Metotların Türleri
Java’da iki tür yapıcı metot vardır, bunlar parametresi olmayan yapıcı metotlar ve parametresi olan yapıcı metotlardır.
Parametresi Olmayan Yapıcı (Constructor) Metotlar
Parametresi olmayan yapıcı metotlar, varsayılan yapıcılar olarak da bilinmektedir. Varsayılan yapıcı (Constructor) metotlar ile ilgili örneklerimize geçelim.
1. Örnek
1 2 3 4 5 6 7 8 9 10 11 12 | class motor { //parametresiz, varsayılan bir yapıcı metot oluşturduk. motor() { System.out.println("Motor oluşturuldu."); } public static void main(String args[]) { //varsayılan bir yapıcı çağırdık. motor motor1 = new motor(); } } |
Ekran Çıktısı
1 | Motor oluşturuldu. |
Yaptığımız bu örnekte ilk olarak motor sınıfımızı oluşturduk ve içerisine metodumuzu tanımladık. Daha sonra main metodumuz içerisinde nesne oluşturduk. Bu oluşturduğumuz nesne varsayılanyapıcı metodumuzu çağıracaktır.
2. Örnek
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | class okul { int numara; String adı; int yas; //numara, adı ve yas değerlerini gösteren metot tanımladık. void goster () { System.out.println (numara + "" + adı + "" +yas); } public static void main (String args []) { // nesnelerimizi oluşturduk okul okul1 = new okul(); okul okul2 = new okul(); okul okul3 = new okul(); //nesnelerimizin değerlerinin çıktısını verdik okul1.goster(); okul2.goster(); okul3.goster(); } } |
Ekran Çıktısı
1 2 3 | 0null0 0null0 0null0 |
Yaptığımız bu örnekte ilk olarak okul sınıfımızı oluşturduk. numara, adı ve yas değerlerini gösteren bir metot tanımladık. Sonrasında ise üç adet nesne oluşturduk ve bu nesnelerin gösterilmesini sağladık. Örneğimizde hiçbir yapıcı metodu oluşturmadığımız için Java bize varsayılan bir yapıcı metodu sağladı. Ekran çıktımızda ise boş değerlerimizin çıktısı verildi, bu varsayılan yapıcılar (contructors) tarafından sağlanmaktadır.
Parametresi Olan Yapıcı (Constructors) Metotlar
Belirli sayıda parametreye sahip bir yapıcı (constructor) metotlar, parametresi olan yapıcılar olarak adlandırılır. Parametresi olan yapıcı metotlar, nesnelere değerler atamak için kullanılır. Örneklerimize geçelim.
1. Örnek
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | public class Cons { int sayi; //parametresi olan bir yapıcı oluşturduk. public Cons(int i) { sayi = i; } //sayımızı gösteren bir metot tanımladık. void goster () { System.out.println("Girilen sayı = " + sayi); } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("Sayıyı giriniz "); int n = scanner.nextInt(); //nesnemizi oluşturduk. Cons con = new Cons(n); con.goster(); } } |
Ekran Çıktısı
1 2 3 | Sayıyı giriniz 10 Girilen sayı = 10 |
2. Örnek
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | class okul { int numara; String adı; int yas; //parametresi olan bir yapıcı oluşturduk. okul(int i, String n, int y) { numara = i; adı = n; yas = y; } //numara, adı ve yas değerlerini gösteren metot tanımladık. void goster () { System.out.println (numara + " " + adı + " " +yas); } public static void main (String args []) { // nesnelerimizi oluşturduk ve içerlerine değerlerimizi atadık okul okul1 = new okul(204743, "Mehmet" , 14); okul okul2 = new okul(288532, "Ziya" , 12); okul okul3 = new okul(232652, "Asiye" ,13); //nesnelerimizin değerlerinin çıktısını verdik okul1.goster(); okul2.goster(); okul3.goster(); } } |
Ekran Çıktısı
1 2 3 | 204743 Mehmet 14 288532 Ziya 12 232652 Asiye 13 |
Yaptığımız bu örnekte ilk olarak okul sınıfımızı oluşturduk. İçerlerine değerler atamak için değişkenler tanımladık. Parametresi olan bir okul yapıcı metodunu oluşturduk. Değerlerimizi göstermek için goster() metodumuzu oluşturduk. Daha sonra main metodumuz içerisinde üç adet nesne oluşturduk ve bu nesnelerin içerisine değerlerimizi girdik. Sonrasında goster() metodumuz ile ekran çıktımızı sağladık.
Java’da Yapıcı (Constructor) Metotları Aşırı Yükleme
Java’da yapıcı (Constructor) metotlar, metotlara benzediğini söylemiştik, Java’da metotlarda olduğu gibi yapıcı metotlar da aşırı yüklenebilir.
Java’da yapıcı (Constructor) metotların aşırı yüklenmesi, farklı parametrelere sahip birden fazla yapıcıya sahip olma tekniği olarak belirtebiliriz. Her yapıcı metot farklı bir görevi gerçekleştirecek şekilde düzenlenmiştir. Örneğimize geçelim.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | class arac{ int yas; String model; String marka; //2 yapıcı metot oluşturduk içlerine parametreler girdik arac(int i,String n){ yas = i; model = n; } arac(int i,String n,String y){ yas = i; model = n; marka=y; } //ekran çıktımız için metot tanımladık void goster(){ System.out.println(yas+" "+model+" "+marka); } public static void main(String args[]){ //2 adet nesne oluşturduk arac arac1 = new arac(3,"Clio"); arac arac2 = new arac(5,"Gtr","Nissan"); //ve goster metodumuzu kullanarak ekran çıktımızı verdik arac1.goster(); arac2.goster(); } } |
Ekran Çıktısı
1 2 | 3 Clio null 5 Gtr Nissan |
Yaptığımız aşırı yükleme örneğinde ilk olarak arac sınıfımızı oluşturduk ve içerisine yapıcı metotlarımızı parametreleriyle birlikte tanımladık. Sonrasında ise ekran çıktısının verilmesi için goster() metodumuzu tanımladık. main metodumuzda iki adet nesne oluşturduk ve içerisine değerlerimizi girdik. goster() metodumuz ile ekran çıktımızın verilmesini sağladık.