Yapılandırıcılarınız public olmalıdır.Eğer başka sınıflarda nesne oluşumunu engellemek istiyorsanız private yapabilirsiniz ama bu özel durumlar haricinde kullanılan bir yol değildir.
Peki yapılandırıcımız hangi özelliklere sahip olmalıdır?
- Sınıfla aynı adı taşımak zorundadır.
- Dönüş değeri yoktur.
- Parametreli ya da parametresiz yapılandırıcı olabilir.
package Constructor;
public class Student {
private String name;
private int age;
private int no;
//Default contructor
public Student()
{
//Değişkenlerimizin default değerleridir.
name="There are no name";
age=0;
no=0;
}
//Non-default contructor
public Student(String name,int age,int no)
{
this.name=name;
this.age=age;
this.no=no;
}
public void setname(String name)
{
this.name=name;
}
public void setage(int age)
{
this.age=age;
}
public void setno(int no)
{
this.no=no;
}
public String printID()
{
return "name : "+name+"\n"+"age : "+age+"\n"+"no : "+no.
}
}
Yukarıdaki sınıfımızın işlevi bir öğrencinin adı yaşı ve numarasını edinmektir.Default contructor,parametreli contructor ,set ve printID() fonksiyonlarım bulunmaktadır.DEFAULT CONSTRUCTOR:
Parametre almayan contructorlardır.Fonksiyonun body kısmında sınıfın değer atamalarına isteğiniz değerleri atayabilirsiniz.(Ben en başta hiç bir ögrenci olmadığını varsayarak default olarak yukarıdaki değerleri atadım.)
NON-DEFAULT CONTRUCTORS:
Parametre alan yapılandırıcılardır.Kullanıcı nesne oluşturma anında bu değerleri de girer ve sınıfımız değişkenlerine o değerler atanır.
Programımızın main kısmı...
package Constructor;
public class Test_main {
public static void main(String[] args) {
//Default constructor çağrılır
Student student=new Student();
System.out.println(student.printID());
System.out.println("**********************");
//Set fonksiyonlar ile default değerlere yeni değerler atanır
student.setname("Aylin");
student.setage(21);
student.setno(1236);
System.out.println(student.printID());
System.out.println("**********************");
//Parametreli yani default olmayan contructor çağrılır
Student student2=new Student("Anil",22,1163);
System.out.println(student2.printID());
}
}
Mainde önce default yapılandırıyı çağırmış olduk çünkü parametre girmedik ve böylece Student sınıfımızın değişkenlerine default yapılandırıcı oluştururken atadığımız değerler atanır.Daha sonra set fonksiyonlarla değerleri değiştirip tekrar ekrana yazdırdık.Son olarakta başka bir nesne oluşturduk ve bu sefer parametreli yapılandırıcıyı kullandık.Böylece sınıfın değişkenlerine girdiğimiz değerler atanmış oldu.
Son olarak değinmek istediğim bir konu daha var.Yapılandırıcıyı eğer parametreli yaptıysanız ve default olan yapılandırıcıyı yazmadıysanız derleyici bunun yapılandırıcısı var madem ben yazmam der.Eğer siz nesne oluştururken yukarıdaki student nesnesini oluşturduğumuz gibi yani parametre almadan oluşturursanız program default yapılandırıcı yok diye hata verir.Bu durum tam tersi içnde geçerlidir.Yani sadece default var ama siz nesne oluştururken parametre girerseniz bu seferde parametreli yapılandırıcı yok diye hata verecektir.
Yukarıdaki programımızın çıktısınız da verip yazımı sonlandırıyorum.Herkese iyi çalışmalar :)
Hiç yorum yok:
Yorum Gönder