16 Kasım 2015 Pazartesi

Java - Inheritance


Inheritance (miras alma, kalıtım), bir nesnenin özelliklerinin farklı nesneler tarafından da kullanılabilmesine olanak sağlayan Object Oriented Programming özelliğidir.
Yazılan bir sınıf bir başka sınıf tarafından miras alınabilir.
Bu işlem yapıldığı zaman temel alınan sınıfın tüm özellikleri yeni sınıfa aktarılır.

Superclass: Özellikleri kalıtım yoluyla diğer alt class’lara aktarılan class’tır.
Subclass: Superclass’ın özellikleri alan sınıftır.
Inheritance için extends anahtar sözcüğü kullanılır.

class Super{
.....
}

class Sub extends Super{
.....
}

  • Superclass içerisinde private olarak tanımlanan metodlar subclass tarafından inherit edilemez.
  • Superclass içerisinde tanımlanan bir metod subclass içerisinde override edilebilir.
  • Superclass içerisinde tanımlanan bir field, sublass içerisinde de tanımlanırsa bu field hiding edilir.
  • Subclass içerisinde farklı metodlar ve alanlar tanımlanabilir.
  • Superclass içerisinde tanımlanan static bir metod subclass içerisinde kullanılırsa hiding edilir.
  • Superclass içerisindeki bir metod veya field a super anahtar kelimesiyle erişilebilir.



Ø  Calculation superclasstır.


public class Calculation {

      int sonuc;

      public void addition(int x, int y) {
            sonuc = x + y;
            System.out.println("Toplam:" + sonuc);
      }

      public void Substraction(int x, int y) {
            sonuc = x - y;
            System.out.println("Fark:" + sonuc);
      }
}

Ø  My_Calculation subclasstır.

public class My_Calculation extends Calculation {

      public void carpma(int x, int y) {
            sonuc = x * y;
            System.out.println("Çarpım:" + sonuc);
      }

      @Override
      public void toplama(int x, int y) {
            sonuc = x + y;
            System.out.println("(Override method) Toplam:" + sonuc);
      }

      public void deneme() {

            toplama(10, 5);// bu classın methodunu çağırır
            this.toplama(10, 5);// bu classın methodunu çağırır
            super.toplama(10, 5);// superclass methodunu çağırır
            cikarma(10, 5);// superclass methodunu çağırır
            carpma(10, 5);// bu classın methodunu çağırır
      }
}

Ø  Test class

public class CalculationTest {

      public static void main(String[] args) {

            My_Calculation test = new My_Calculation();

            test.deneme();
      }
}


 Çıktı:

(Override method) Toplam:15
(Override method) Toplam:15
Toplam:15
Fark:5

Çarpım:50

Hiç yorum yok:

Yorum Gönder