Çözüldü Java'da nesne değişkenlerinin varsayılan değeri neden constructor ile atanır?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

BeyazEsya

Picopat
Katılım
1 Mayıs 2021
Mesajlar
184
Daha fazla  
Cinsiyet
Erkek
Meslek
Öğrenci
Merhaba, Java öğreniyorum ve kafam takılan bir soru var. Bunları cevaplayabilirseniz çok mutlu olurum.
Nesne değişkenleri (nitelikler) tanımlanırken neden varsayılan değer tanımlanma anında atanmaz da constructor ile atanır?

Screenshot_1.png
 
Son düzenleme:
Çözüm
Merhaba, Java öğreniyorum ve kafam takılan bir soru var. Bunları cevaplayabilirseniz çok mutlu olurum.
Nesne değişkenleri (nitelikler) tanımlanırken neden varsayılan değer tanımlanma anında atanmaz da constructor ile atanır?

Eki Görüntüle 1016934
Kullanıcıların bilgisini tutugun bir sınıfın olsun. Bu sınıfta ismi tutan 1 adet string degişkenimiz olsun. Sen bu değişkenleri bu şekilde atarsan her kullanıcı oluşturdugunda yani nesne oluşturdugunda adları aynı olur.
Java:
class User {
    public string name= "Ahmet";
}
User emre = User();
//emre.name = Ahmet olmuş oldu!

Fakat constructor yardımı ile atama yaparsan nesne oluşturdugunda degişkenlere değerleri atabiliyorsun.
Java:
class User{
    public string name;
    public User(string name) {
        this.name = name;
    }
}

User emre = User("Emre");
//emre.name -> Emre olmuş oldu!

Sen şimdi dersin ki emre.name = "Emre" Yaparım. Fakat bu işler basit projelerde pek önemli olmasada karmaşık projelerde bu tip kullanımlar seni yavaşlatır. ve hataya sürükler.

Daha farklı kod yazalım. farkı iyi görürsün.
Java:
class User{
    public int id;
    public String firstname;
    public String lastname;
    public String age;
}

void main() {
    List<User> users = new ArrayList<User>();
    //1. yöntem
    User user1 = new User();
    user1.id = 1;
    user1.firstname = "User1";
    user1.lastname = "last";
    user1.age = 20;
    users.add(user1);
    
    //2. yöntem
    users.add(new User(1, "ad", "soyad", 22));
    
    //Constructor kullanmazsan 1. yöntemle eklersn. Düşünsene onlarca nesne ekledigini :D
}
Constructor'da dışarıdan alacağınız değerlerin ilk atamaları için kullanılabilir. Varsayılan değerler için bu şekilde kullanma da bir sakınca görmüyorum. C#'da ben de bu şekilde kullanıyorum. (çok yakın diller)
 
Constructor'da dışarıdan alacağınız değerlerin ilk atamaları için kullanılabilir. Varsayılan değerler için bu şekilde kullanma da bir sakınca görmüyorum. C#'da ben de bu şekilde kullanıyorum. (çok yakın diller)
Şunu buldum bir de:

Burda da açıklanmış ama yine de constructor içerisinde deger vermek daha iyi geldi bana. Hem girişte basitlik sağlıyor sanki.😀
 
Merhaba, Java öğreniyorum ve kafam takılan bir soru var. Bunları cevaplayabilirseniz çok mutlu olurum.
Nesne değişkenleri (nitelikler) tanımlanırken neden varsayılan değer tanımlanma anında atanmaz da constructor ile atanır?

Eki Görüntüle 1016934
Kullanıcıların bilgisini tutugun bir sınıfın olsun. Bu sınıfta ismi tutan 1 adet string degişkenimiz olsun. Sen bu değişkenleri bu şekilde atarsan her kullanıcı oluşturdugunda yani nesne oluşturdugunda adları aynı olur.
Java:
class User {
    public string name= "Ahmet";
}
User emre = User();
//emre.name = Ahmet olmuş oldu!

Fakat constructor yardımı ile atama yaparsan nesne oluşturdugunda degişkenlere değerleri atabiliyorsun.
Java:
class User{
    public string name;
    public User(string name) {
        this.name = name;
    }
}

User emre = User("Emre");
//emre.name -> Emre olmuş oldu!

Sen şimdi dersin ki emre.name = "Emre" Yaparım. Fakat bu işler basit projelerde pek önemli olmasada karmaşık projelerde bu tip kullanımlar seni yavaşlatır. ve hataya sürükler.

Daha farklı kod yazalım. farkı iyi görürsün.
Java:
class User{
    public int id;
    public String firstname;
    public String lastname;
    public String age;
}

void main() {
    List<User> users = new ArrayList<User>();
    //1. yöntem
    User user1 = new User();
    user1.id = 1;
    user1.firstname = "User1";
    user1.lastname = "last";
    user1.age = 20;
    users.add(user1);
    
    //2. yöntem
    users.add(new User(1, "ad", "soyad", 22));
    
    //Constructor kullanmazsan 1. yöntemle eklersn. Düşünsene onlarca nesne ekledigini :D
}
 
Çözüm
Kullanıcıların bilgisini tutugun bir sınıfın olsun. Bu sınıfta ismi tutan 1 adet string degişkenimiz olsun. Sen bu değişkenleri bu şekilde atarsan her kullanıcı oluşturdugunda yani nesne oluşturdugunda adları aynı olur.
Java:
class User {
    public string name= "Ahmet";
}
User emre = User();
//emre.name = Ahmet olmuş oldu!

Fakat constructor yardımı ile atama yaparsan nesne oluşturdugunda degişkenlere değerleri atabiliyorsun.
Java:
class User{
    public string name;
    public User(string name) {
        this.name = name;
    }
}

User emre = User("Emre");
//emre.name -> Emre olmuş oldu!

Sen şimdi dersin ki emre.name = "Emre" Yaparım. Fakat bu işler basit projelerde pek önemli olmasada karmaşık projelerde bu tip kullanımlar seni yavaşlatır. ve hataya sürükler.

Daha farklı kod yazalım. farkı iyi görürsün.
Java:
class User{
    public int id;
    public String firstname;
    public String lastname;
    public String age;
}

void main() {
    List<User> users = new ArrayList<User>();
    //1. yöntem
    User user1 = new User();
    user1.id = 1;
    user1.firstname = "User1";
    user1.lastname = "last";
    user1.age = 20;
    users.add(user1);
  
    //2. yöntem
    users.add(new User(1, "ad", "soyad", 22));
  
    //Constructor kullanmazsan 1. yöntemle eklersn. Düşünsene onlarca nesne ekledigini :D
}
Sağ olun,☺ ben tek taraflı düşündüm. Ben parametreyi atamayı hesaba katmadim çünkü constructor içerisinde de varsayilan deger olarak this.hp = 177; yapılabilir. Ben bu şekilde düşününce arada bir fark yoktu. Fakat bir de sizin bahsettiğiniz isin diğer tarafı var: parametre ile veriyi almak.
 
Kullanıcıların bilgisini tutugun bir sınıfın olsun. Bu sınıfta ismi tutan 1 adet string degişkenimiz olsun. Sen bu değişkenleri bu şekilde atarsan her kullanıcı oluşturdugunda yani nesne oluşturdugunda adları aynı olur.
Java:
class User {
    public string name= "Ahmet";
}
User emre = User();
//emre.name = Ahmet olmuş oldu!

Fakat constructor yardımı ile atama yaparsan nesne oluşturdugunda degişkenlere değerleri atabiliyorsun.
Java:
class User{
    public string name;
    public User(string name) {
        this.name = name;
    }
}

User emre = User("Emre");
//emre.name -> Emre olmuş oldu!

Sen şimdi dersin ki emre.name = "Emre" Yaparım. Fakat bu işler basit projelerde pek önemli olmasada karmaşık projelerde bu tip kullanımlar seni yavaşlatır. ve hataya sürükler.

Daha farklı kod yazalım. farkı iyi görürsün.
Java:
class User{
    public int id;
    public String firstname;
    public String lastname;
    public String age;
}

void main() {
    List<User> users = new ArrayList<User>();
    //1. yöntem
    User user1 = new User();
    user1.id = 1;
    user1.firstname = "User1";
    user1.lastname = "last";
    user1.age = 20;
    users.add(user1);
   
    //2. yöntem
    users.add(new User(1, "ad", "soyad", 22));
   
    //Constructor kullanmazsan 1. yöntemle eklersn. Düşünsene onlarca nesne ekledigini :D
}
Son yöntem çok iyiydi , teşekkür ederiz :)
 

Geri
Yukarı