• 12.03.2023
  • 585
  • Java Çok Biçimlilik YapısıYazılı Ders

Java Çok Biçimlilik Yapısı

Polimorfizm, bir eylemin veya yöntemin nesneye dayalı olarak farklı şeyler yapma yeteneğidir.

Nesne yönelimli programlamanın (OOP) çok esnek yapısı burada anlaşılmaktadır.

Aşırı Yükleme ( Overloading ) , Static

Yöntem aşırı yüklemesi, aynı ada ancak farklı yöntem imzalarına sahip birden fazla yöntemin tanımlanmasıdır. Yöntemin adı aynıdır ancak yöntem parametrelerinin sayısı ve türü ile yöntem dönüş türleri farklı olabilir. Aşırı yüklenmiş bir yöntemle karşılaşıldığında Java, parametreleri yöntem çağrısında kullanılan bağımsız değişkenlerle eşleşen yöntemin sürümünü yürütür.

Metot geçersiz kılma, var olan sınıfların yeniden derlemeye ihtiyaç duymadan kodun yeniden kullanılmasını sağlamak için kalıtımla birlikte çalışır.Bu Polimorfizm avantajını gösterir

Bu derste Aşırı Yüklemeye örnek vermiştik.

Geçersiz Kılma ( Overriding ) , Dynamic

Yöntem geçersiz kılma, programcıların üst sınıf ve alt sınıflardaki yöntemler için farklı uygulamalar sağlamasına olanak tanır. Yöntem adı ve yöntem imzası, farklı uygulamalarla aynı olacaktır. Çağrılan gerçek yöntem, çalışma zamanındaki nesnenin türüne bağlıdır.

MainActivity Java Code:

package com.example.cokbicimlilik1;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
        public Asker asker;
        public Tankci tankci;
        String mesaj = "";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        asker = new Asker();
        tankci = new Tankci();

                mesaj = asker.atesEt();
                mesaj += " " + tankci.atesEt();

        TextView textViewMesaj = findViewById(R.id.textViewMesaj);
        textViewMesaj.setText(mesaj);

    }
}

Asker Class Java Code:

package com.example.cokbicimlilik1;

public class Asker {
    public String atesEt(){

        return "Asker ateş etti";
    }
    public final String dur(){
        return "Asker durdu";
    }
}

dur isimli method; Türetilecek alt sınıflarda bazı metotların geçersiz kılınmasının engellenmesi gerekebilir. Bunun için üst sınıftaki metodun erişim belirleyicisine final anahtar kelimesi eklenmelidir.

Tankci sınıfı içindeyken Alt+Ins tuşlarına basarak Generate penceresini açınız. Override Methods komutunu tıklayınız.Daha sonra Ekrana gelen Select Methods to Override/Implement penceresinde atesEt() komutunu seçip OK düğmesine tıklayınız

Tankci Class Java Code:

package com.example.cokbicimlilik1;

public class Tankci extends Asker{
    @Override
    public String atesEt() {
        return "Tankçı " + super.atesEt();
    }
}



Polimorfizmin dezavantajı: Geliştiricilerin kodlarda polimorfizmi uygulamakta zorlanması ve programın okunabilirliğini azaltmasıdır.

NOTLAR

- Üst sınıftan bir alt sınıf türetilirken metotların geçersiz kılınması için @Override anahtar kelimesi okunabilirlik bakımından yazılıyor yoksa yazılmasada olur..

- Türetilecek alt sınıflarda bazı metotların geçersiz kılınmasının engellenmesi gerekebilir. Bunun için üst sınıftaki metodun erişim belirleyicisine final anahtar kelimesi eklenmelidir.

- Bir üst sınıftaki aynı isimdeki methoda ulaşmak için super deyimi kullanılır.

- Üst sınıf çağırarak alt sınıf tanımlaması yapılabilir. İzle

- Bir sınıftan nesne oluşturulması istenmiyorsa abstract deyimi ile soyutlama yapılabilir.

 

YORUM YAP