Junior
Kotlin ve Java arasında sınıf oluşturma konusunda ne değişiklikler oldu?
sobes.tech yapay zeka
AI'dan gelen yanıt
Kotlin ve Java arasında sınıf oluştururken temel değişiklikler:
- Sözdizimi: Kotlin, sınıfları tanımlamak için daha kısa ve ifadeli bir sözdizimine sahiptir.
- Birincil Yapıcı: Kotlin, yapıcıyı doğrudan sınıf başlığında tanımlamaya izin verir.
- Veri Sınıfları: Kotlin,
equals(),hashCode(),toString(),copy()vecomponentN()otomatik üretimi ile veri saklama için özel bir sınıf tipi sağlar. - Mühürlü Sınıflar: Kotlin, belirli bir pakette dışına çıkmayan sınıf hiyerarşisini destekler.
- Delegasyon: Kotlin, özelliklerin ve arayüzlerin delegasyonunu yerel destekler.
- Null Güvenliği: Kotlin, null ile çalışma için katı bir tür sistemi getirir ve NPE'yi önler.
Karşılaştırmalı tablo:
| Özellik | Kotlin | Java |
|---|---|---|
| Sınıf Tanımlama | class MyClass (val property: Type) |
class MyClass { Type property; } |
| Birincil Yapıcı | Sınıf başlığında | Ayrı bir yöntem |
| Veri Sınıfı | Yerel destek (data class) |
Elle uygulama / Lombok gerekebilir |
| Mühürlü Sınıf | Yerel destek (sealed class) |
Desteklenmiyor |
| Delegasyon | Yerel destek (by) |
Elle uygulama gerekebilir |
| Null Güvenliği | Katı tür sistemi null ile | İzin verir null |
Kotlin'de Veri Sınıfı örneği:
data class User(val name: String, val age: Int)
Java'da karşılık gelen sınıf (ek kütüphane kullanmadan):
public class User {
private final String name;
private final int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
return age == user.age && Objects.equals(name, user.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}