Kotlin de Kalıtım Konusu
Sınıf(Class)
Sınıflar nesne özelliklerine sahip değişken ve metodların bulunduğu yapılardır. Sınıflar nesne tabanlı programlama kullanan her programlama dilinde kullanılabilir.Bir çok programlama dili, sınıflara ev sahipliği yapar. Java , C++, Swift, PHP , farklı tabanlarda farklı işlemlerde ve farklı yazılım lar da yazılsalar da sınıflar çoğu programlama dilinde kullanılır.Sınıf ile nesne aynı yapılar değildir. Sınıf nesnenin özelliklerini tutar ve soyut bir yapıdır. Sınıf ve nesne birbirine bağlı kavramlardır. Çünkü her nesnenin bir sınıfı olmak zorundadır.
Nesne(Object)
Sınıf ile nesne arasında bir ilişki bulunduğunu yukarıda belirtmiştik. Sınıflar soyut ifadelerdir. Sabun fabrikasında yeni bir sabun tasarımı üzerinde çalıştığımızı hayal edelim; ortaya yeni bir kalıp çıkarttık… Artık son aşama olan üretime geçmek istiyoruz. Bu kalıp içerisinde sabun nesnelerinin hangi boyutlarda, hangi renkte olacağı, nasıl kokacağı vs. gibi bilgilerin hepsi bizim tarafımızdan belirlenmiş durumda olacaktır. Üretim aşamasına geçildiğinde hep aynı sabun kalıbını kullanılarak yeni sabun nesneleri üretmemiz mümkün olacaktır. Buradaki önemli nokta, sabun kalıbı tasarımı bir kez yapılmış olmasıdır; ancak, bu kalıp ile N tane sabun nesnesi üretilebilmektedir. Buradan yola çıkılarak sabun kalıbını sınıfa, sabunlarsa nesnelere benzetilebilir.
Nokta(.) Operatörü
Programın içerisinde bulunan sınıflara ait özellikleri ve metotları kullanabilmek için bir sınıftan bir nesne oluşturmamız gerekmektedir. Nesne ile sınıfın özellik ve metotlarına erişebilmek için nokta(.) operatörü kullanılmaktadır. Nokta operatörü nesne ile birlikte kullanılır.
this Anahtar Sözcüğü
this anahtar sözcüğü kotlin de kullanıldığı gibi Javada da kullanılmaktadır. İşaret etmek anlamında kullanılır. Sınıf içerisinde kullanılır ve nesneyi oluşturduktan sonra oluşan nesneyi ifade etmeye yarar. İlerleyen derslerimizde bu kavramı daha da detaylı bir şekilde anlatacağız. Şu anda nesne tabanlı programlamada kullanacağımız kavramlara aşinalık olması açısından kısaca bahsediyoruz.
Özellikler(properties)
Sınıf ve nesne ile ilişkili olan bir kavramdır. Nesnelerin özelliklerini ifade etmek için kullanılmaktadır. Bir sınıf oluşturulduğunda: Değişkenler, Sabitler, Metotlar ve Sınıfların içinde tanımlanmış sınıflar yani İnner Class oluşturulur. Saymış olduğumuz bu dört kavramda nesne özelliğine aittir.
Metotlar(Methods)
Daha önceden bu konu ile ilgili ders yapmıştık. Bu derse linkten ulaşabilirsiniz. Metodlar uygulamalarda belirlenmiş işlevleri ve görevleri yapmak için dizayn edilmiş programcıklardır. Metod tanımlamak için fun anahtar sözcüğü kullanılır. Nesnelerin işlevlerini belirlemek ve nasıl kullanılacaklarını göstermek için metodlar kullanılır. Burada kısaca bir tekrar verdik. Daha fazla bilgiye yukarıda belirttiğimiz linkten ulaşabilirsiniz.
Arayüz(Interface)
Nesne yönelimli programlama dillerinde en soyut kavramlar arayüzlerdir diyebiliriz. Sınıflar soyuttur fakat metodlar belirli bir işi yerine getirmek üzere tasarlandıkları için soyut değildir. Arayüzlerde ise nesnelerin özellikleri ve işlevleri sadece liste olarak tanımlayabildiğimiz kavramlardır. Kısacası Arayüzlerde nesnelere hangi özellik ve işlevler verilecekse onların sadece sınıf isimleri belirtilir.
Kalıtım(Inheritance)
Kalıtım gündelik hayattaki kullanımdan esinlenerek oluşturulmuş bir yapıdır. Nesneler kalıtım özelliğini kullanarak özelliklerini başka nesnelere aktarabilirler. Kalıtım kullanılarak oluşturulan bir sınıftan yeni sınıflar türetilebilir. Kotlin dilinde tüm sınıflar Any ( Herhangi bir tür olabilir anlamına gelen bir sözcük öbeğidir) sınıfından türetilerek elde edilmiştir. Kalıtım kullanılarak bir classı başka bir classın alt classı yapılabilir. Ve bu sınıftan üretilen nesnenin üst classında ki özellikleri metodları , değişkenleri kullanabilir. Ve ekstra olarak kendi içerisinde de classına özel değişkenler ve metotlar tanımlayabilir.
Kalıtım çok kolay bir şekilde kod parçaçıkları oluşturmamızı sağlar.
Sınıf Oluşturalım.
class sinifAdi{
// Kodlar
}
Değişken ve Metot Oluşturmak
class ogrenciSinifi{
var name : String = “Halil Özel”
var number: Int= 1234
var age: Int = 21
fun bilgileriGoster(){
println(“name : “+name)
println(“number : “+number)
println(“age : “+age)
}
}
Nesne Oluşturmak
var nesneAdi=SinifAdi()
Son olarak tüm kodları toplayı bir hale getiriyoruz.
class ogrenciSinifi{
var name : String = “Halil Özel”
var number: Int= 1234
var age: Int = 21
fun bilgileriGoster(){
println(“name : “+name)
println(“number : “+number)
println(“age : “+age)
}
}
fun main(args: Array<String>) {
var ogrenci1=ogrenciSinifi()
ogrenci1.age
ogrenci1.name
ogrenci1.number
ogrenci1.bilgileriGoster()
}
Kodumuzun çıktısı ise aşağıdaki gibidir :
name : Halil Özel
number : 1234
age : 21