Java SE Ders21 - Kalıtım (Inheritance)


  Bir sınıfın başka bir sınıfın özelliklerini taşıması kalıtım ile sağlanır. Kalıtım sayesinde benzer özellikler taşıyan sınıfların her birinde aynı üye elemanların tanımlanmasına gerek kalmaz.Kalıtımın en üst sınıfında tanımlanması yeterlidir.
  • Kalıtımın en üstünde yer alan sınıfa süper sınıf (super class), altındaki sınıflara ise alt sınıf (subclass) denmektedir.
  • Java'da sınıf hiyerarşisi Object sınıfı ile başlar.Bu sınıf programlama aşamasında açık olarak belirtilmese de tanımlanan tüm sınıfların atasıdır.
  • Java çoklu kalıtıma izin vermez.Bir sınıf iki veya daha fazla sınıfın özelliklerini tek seferde alamaz. Yani elimizde bir A,B,C sınıfları varsa, bu A sınıfı aynı anda B ve C'nin özelliklerini alamaz.
  • Constructor (Yapılandırıcı) metotlar sınıfların kendilerine özeldir kalıtımla alt sınıflara geçmez.Ancak alt sınıfta üst sınıfın constructoru çağrılabilir.Bu super metoduyla yapılır.Bu konuyu daha sonra açılayacağız.
  • Kalıtım extends anahtar kelimesi ile sağlanır. Yani A sınıfı eğer üst sınıfsa, B sınıfı da alt sınıf olacaksa bu şekilde yapılır.
  • public class B extends A{..}

Program yazmadan önce bazı açıklamalarda bulunmakta fayda var.
  • A ve B sınıfları oluşturacağız.
  • A üst sınıf , B alt sınıf olacak.
  • A sınıfında a değişkeni ve ilgili metotları olacak.
  • B sınıfında b değişkeni ve ilgili metotları olacak.
  • B sınıfı A sınıfın alt sınıfı olduğu için, A sınıfında tanımlanan elemanların kalıtım yoluyla B sınıfına da geçtiği görülecek ve B sınıfında tekrar tekrar aynı elemanların tanımlanmasına gerek kalmayacak.
Main.java
package test;

public class Main {

 public static void main(String[] args) {
  
  A a_nesne=new A();
  a_nesne.setA(10);
  
  B b_nesne=new B();
  b_nesne.setB(20);
  b_nesne.setA(30);

  
  System.out.println("a_nesnesi -> a değeri = "+a_nesne.getA());
  System.out.println("b_nesnesi -> b değeri = "+b_nesne.getB());
  System.out.println("b_nesnesi -> a değeri = "+b_nesne.getA());
 }

}

A.java
package test;

public class A {
 private int a;

 public int getA() {
  return a;
 }

 public void setA(int a) {
  this.a = a;
 }
}

B.java
package test;

public class B extends A {
 private int b;

 public int getB() {
  return b;
 }

 public void setB(int b) {
  this.b = b;
 }
}




Yorumlar

Bu blogdaki popüler yayınlar

Java SE Ders24 - Composition (Kompozisyon)

Spring Ders20 - Aspect Oriented Programming - AspectJ Annotation Style

JSF Ders30 - Page Template (Sayfa Şablonu)