Abstract ile Interface Arasındaki Fark

  1. cemmm
    5
    466
    12/4/2018 9:00:00 PM

    Abstract sınıf ile Interface arasındaki farklar nelerdir ,abstract mı kullanlıyız , interface mi ?

    c# java diğer 10 gün önce 86 Görüntüleme

( 2 ) Cevap

  1. koraydrk
    5
    427
    12/5/2018 10:56:00 AM

    İnterface bir şartname gibidir , bir sözleşmedir ,bu sözleşmede interface i implement edecek sınıfların mutlaka bulundurması gereken metotların imzalarını bulunur. İmzadan kasıt gövdesi olmayan metotlardır ; örneğin void YemekYe();

    interface Insan
    {
        void YemekYe();
    
        string Konus();
    }
    
    class Japon : Insan
    {
    
        string Dil;
        public void YemekYe()
        {
            Console.WriteLine("YemekYerim");
        }
    
        public string Konus()
        {
            return this.Dil;
        }
    }
    

    abstract class lar interface e benzerler fakat çok daha fazla işlevleri vardır. Abstract sınıflarda gövdeleri olmayan metotlar barındırır fakat aynı zamanda interfaceden farklı olarak field(değişken) , property ve içi dolu metotlar da barındırabilir , hatta cosntructor ı bile olabilir.

    abstract class Insan
    {
        string Dil;
    
        public Insan(string dil)
        {
            Dil = dil;
        }
        public abstract void YemekYe();
        public string Konus()
        {
            return this.Dil;
        }
    }
    
    class Japon : Insan
    {
        public Japon(string dil) : base(dil)
        {
        }
    
        public override void YemekYe()
        {
          Console.WriteLine("Yemek Yerim");
        }
    }
    

    hangisini kullanmalı soruna gelince , abstract sınıfları ve interface i tam manada anlayınca bu sorunun cevabını kendin bulacaksın.

  2. Emre
    3
    456
    12/5/2018 11:13:00 AM

    1) Bir sınıf birden fazla interface i implement edebilir , fakat bir tane abstract sınıftan kalıtım alabilir

    2) İnterface e field koyamazsınız , fakat abstract class field(değişken) barındırabilir.

    3) İnterface de Constructors olamaz , Abstract sınıfta Constructors olabilir.

    4) İnterface de hiç bir zaman access modifiers kullanamazsınız ,çünkü default olarak her şeyi public kabul eder.Abstract sınıfta ise kullanılabilir.

    5) İnterface de sadece metotların imzaları bulunur , yani gövdesi olmayan metotlar. Abstract sınıfta ise hem gövdesi olmayan ,içi boş metotlar , hemde gövdesi olan , içi dolu metotlar olabilir

Cevabınız