Ekim 18, 2021
11 11 11 ÖÖ
TCP nedir ? Aktarım Katmanı 2
Aktarım Katmanı Tcp Nedir
Yönlendirme Nedir 2 ?
Yönlendirme Nedir ?
Ağ Katmanı Nedir 2 ?
Ağ Katmanı Nedir ?
Veri Bağı Katmanı Nedir 2 ?
Android Studio Nasıl Kurulur ?
Veri Bağı Katmanı Nedir ?
Fiziksel Katman Nedir ?
Son Yazılar
TCP nedir ? Aktarım Katmanı 2 Aktarım Katmanı Tcp Nedir Yönlendirme Nedir 2 ? Yönlendirme Nedir ? Ağ Katmanı Nedir 2 ? Ağ Katmanı Nedir ? Veri Bağı Katmanı Nedir 2 ? Android Studio Nasıl Kurulur ? Veri Bağı Katmanı Nedir ? Fiziksel Katman Nedir ?
java

Object Oriented Programming Kalıtım

Paylaşım , Takip İçin

Kalıtım/Miras Nedir?

  • Kalıtım, mevcut sınıflardan yeni bir sınıf türetmeye denir.
  • Türetilen bu yeni sınıflar, türetildiği sınıfa ait özelliklere sahip olur.
  • Fakat bunun tam tersi doğru değildir. Yani üst sınıf, alt sınıfın tüm özelliklerine sahip olmayabilir.
  • Java’da kalıtım yapmak için kullandığımız anahtar kelime extends dir.
  • Kalıtım gerçek hayatta karşılaştığımız problemlerin modellenmesinde bize büyük kolaylık sağlamaktadır.
  • Şimdi Kisi adında bir sınıfımız olsun ve bu sınıftan Ogrenci adında bir alt sınıf türettiğimizi düşünelim.

Kisi.java - Ogrenci.java

public class Kisi {

  private String adSoyad;

  private String dogumTarihi;

  private char cinsiyet;

  public void yaz() {

  System.out.println("Kisi Sınıfı");

  }
public class Ogrenci extends Kisi {

  private int ogrNo;

  private String bolum;

  @Override

  public void yaz() {

  System.out.println("Ogrenci Sınıfı");

  }
  • Yukarıdaki örnek üzerinde de görülebileceği gibi Ogrenci sınıfı Kisi sınıfından türetilmiştir.
  • Bu iki sınıftan birer nesne oluşturularak bu nesnelere yaz() metodu çalıştırıldığında ekranda ilgili sınıfın metodu çalışacaktır.

Üye Erişimleri

  • Her ne kadar altsınıf süper sınıfın tüm üye değişken ve metotlarına erişebilse de, private olarak tanımlanan üyelere erişemez.
  • Bu noktada private olarak tanımlanan değişkenlere erişebilmek için getter/setter metotlarının yazılması gerekir.
  • Bir sonraki örnekte görülebileceği gibi Kisi sınıfındaki üye değişkenlere alt sınıftan değer atamak için getter/setter metotları tanımlanmıştır.

Örnek

public class Kisi {

 private String adSoyad;

 private String dogumTarihi;

 private char cinsiyet;

public Kisi() {

 this.adSoyad="";

 this.dogumTarihi="";

 this.cinsiyet=' ';

}

public String getAdSoyad() {

 return adSoyad;

}

public void setAdSoyad(String adSoyad) {

 this.adSoyad = adSoyad;

}
public String getDogumTarihi() {

 return dogumTarihi;

}

public void setDogumTarihi(String dogumTarihi) {

this.dogumTarihi = dogumTarihi;

}

public char getCinsiyet() {

 return cinsiyet;

}

public void setCinsiyet(char cinsiyet) {

 this.cinsiyet = cinsiyet;

}

Super Class ve Sub Class

  • Bir super sınıfa ait birden fazla alt sınıf tanımlanabilir.
  • Fakat bir alt sınıf birden fazla super sınıftan türetilemez.

  public class Ogrenci extends Kisi

  • Bu ifadeye baktığımızda Kisi sınıfı süper sınıf, Ogrenci sınıfı ise bu sınıftan türetilen alt sınıf olarak anlaşılmalıdır.
  • Örneğin Kişi sınıfından bir sınıf daha türetelim:

  public class Personel extends Kisi

Personel.java

public class Personel extends Kisi {

  private int sicilNo;

  private String birim;

  private String unvan;

  private long dahiliTel;

  public Personel(String adSoyad, String dogumTarihi, char cinsiyet,

  int sicilNo, String birim, String unvan, long dahiliTel) {

  super(adSoyad, dogumTarihi, cinsiyet);

  this.sicilNo = sicilNo;

  this.birim = birim;

  this.unvan = unvan;

  this.dahiliTel = dahiliTel;

  }

 //Getter/setter metotlarının ekleneceği yer.

}

super() Metodu ile Üst Sınıfın Yapılandırıcısını Çağırmak

  • super() metodu özel bir metottur ve bir üst sınıfın üye değişken ve yapılandırıcılarına erişmek için kullanılır.
  • Eğer süper sınıfa ait birden fazla yapılandırıcı metot varsa, yani yapılandırıcı metotlar aşırı yüklenmişse, bu durumda gönderilen parametrelerin tip ve sayısına göre hangi yapılandırıcı metodun çağırılacağı belirlenir.
  • Personel.java içerisinde kullanılan super metodu.

  super(adSoyad, dogumTarihi, cinsiyet);

  • Yukarıda verilen kod üst sınıfa ait aşağıdaki yapılandırıcı metodu çağıracaktır.

   public Kisi(String adSoyad, String dogumTarihi, char cinsiyet)

Yapılandırıcıları Bindirmek

  • Bazı durumlarda bir üst sınıfa ait bir nesne kullanarak yapılandırıcı metotlar üst üste bindirilebilir
  • this anahtar kelimesi bulunduğu sınıfı referans gösterir.
  • super anahtar kelimesi ise bir üst sınıfa ait referansı döndürmektedir.
  • Bunu bir Örnek ile gösterelim.

Örnek

public Ogrenci(String adSoyad, String dogumTarihi, char cinsiyet,int ogrNo,String bolum) {

    super(adSoyad, dogumTarihi, cinsiyet);

    this.ogrNo=ogrNo;

    this.bolum=bolum;

}

public Ogrenci(Kisi obj,int ogrNo, String bolum)

{

    super(obj);

    this.ogrNo=ogrNo;

    this.setBolum(bolum);

}

public Ogrenci(Ogrenci obj)

{

    super(obj.getAdSoyad(),obj.getDogumTarihi(),obj.getCinsiyet());

    this.setOgrNo(obj.ogrNo);

    this.bolum=obj.getBolum();

}

Metotların Devre dışı Bırakılması (Overriding)

  • Java’nın Çok Biçimlilik (Polymorphism) bunun iki yolunun olduğunu söylemiştik bunlar:
  • Aşırı Yükleme (Overloading)
  • Devre Dışı Bırakma (Overriding)
  • Java’da bindirilmiş bir metot çağrıldığında, hangi metodun seçileceğini parametre sayısı ve tipi belirler.
  • Metotların Aşırı Yüklenmesi (Overloading) kavramını daha önce anlatmıştık.
  • Eğer bir sınıf, türetildiği sınıftaki bir metodu değiştiriyorsa buna overriding denir ve üst sınıfa ait aynı adlı metot devre dışı kalır.

Örnek

public class Kisi {

  private String adSoyad;

  private String dogumTarihi;

  private char cinsiyet;

  public void yaz() {

  System.out.println("Kisi Sınıfı");

  }
public class Ogrenci extends Kisi {

  private int ogrNo;

  private String bolum;

public Ogrenci(Kisi obj,int ogrNo, String bolum) {

  super(obj);

  this.ogrNo=ogrNo;

  this.setBolum(bolum);

}

@Override

public void yaz() {

  System.out.println("Ogrenci Sınıfı");

}
  • Verilen Örnek içerisinde hem Kisi sınıfında hem de bu sınıftan türetilen Ogrenci alt sınıfında yaz metodu tanımlanmıştır.
  • Metotlara dikkatlice bakıldığında her iki metotta parametre almamaktadır.
  • Fakat Ogrenci sınıfı altında tanımlanan yaz() metodu üst sınıfta bulunan yaz() metodunu devre dışı bırakmaktadır.
  • Overriding işlemi gerçekleştiğinde Java’da bu işlemin gerçekleştiğini belirtmek için metottan önce “@Override” dipnotu(Annotation) kullanılabilir.
  • Eğer alt sınıf içerisinde bir yaz() metodu tanımlanmamış olsaydı, üst metoda ait yaz() metodu alt sınıf için otomatik olarak çalışacaktı.

Object Sınıfı

  • Object sınıfı Java’da sıklıkla kullanılan bir sınıftır.
  • Java’da oluşturduğunuz tüm sınıflar Object sınıfının bir alt sınıfı olarak Kabul edilebilir.
  • Diğer sınıflardan oluşturulmuş nesneleri Object Sınıfına dönüştürürken herhangi bir tip dönüşümü (type casting) ifadesi yazmanıza gerek yoktur.

  Kisi obj=new Kisi(“Osman Arda”, “01/01/1995”, ‘E’);

  Object o=obj; //Object türünden bir nesneye casting

instance of Anahtar Kelimesi

  • Bu anahtar Kelime genellikle Object tipindeki bir nesnenin hangi sınıfın nesnesi(Örneği) oluğunu bulmak için kullanılır.
Kisi obj=new Kisi("Osman Arda", "01/01/1995", 'E');

Object o=obj;

if(o instanceof Kisi) {

  Kisi k=(Kisi)o;//Kisi sınıfına Casting gerçekleşir.

}
  • Yukarıda verilen örneğe dikkat edildiğinde Object türündeki o nesnesinin Kisi sınıfının bir örneği olup olmadığına bakılır.

Object Örneği

public class objectClass {

  public static void main(String[] args) {

  Kisi obj=new Kisi("Osman Arda", "01/01/1995", 'E');

  Object o=obj;//Object türünden bir nesneye casting

  //instance of nesnenin tipini sorgular.

  if(o instanceof Kisi) {

  Kisi k=(Kisi)o;//Kisi sınıfına Casting gerçekleşir.

  System.out.println(k.getAdSoyad());

  System.out.println(k.getDogumTarihi());

  System.out.println(k.getCinsiyet());

  }

  }

}

Paylaşım , Takip İçin
0 0 votes
Article Rating

Bir Cevap Yazın

0 Yorum
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x
HAYALİNDEKİ YAZILIM
%d blogcu bunu beğendi: