CodeBlanks Logo Icon CodeBlanks

interface vs abstract

C# kursu · Orta seviye · Ders 51/116

interface ile abstract sınıf arasındaki farkı öğrenirsin.

interface vs abstract sınıf

interface bir sözleşmedir; alan içeremez, yalnızca metot imzaları (ve C# 8'den sonra default metotlar) bulundurur. abstract sınıf ise hem gövdeli hem gövdesiz metotlar ve alanlar içerebilir; kısmi uygulama sağlar.

Bir sınıf yalnızca bir abstract sınıfı miras alabilir ama birden çok interface uygulayabilir. interface "yapabilir" ilişkisini (can-do), abstract sınıf «bir ... türüdür» (is-a) ilişkisini temsil eder. Örnek: Song bir Media'dır (abstract) ve IPlayable'dır (interface).

Birlikte kullanım

C#'ta bir sınıf hem bir abstract sınıfı miras alıp hem de birden çok interface uygulayabilir. Sıra: önce abstract sınıf, sonra interface'ler. Örnek: class Song : Media, IPlayable, ICloneable.

Bu desen, ortak davranışı abstract sınıftan alıp ek yetenekleri interface'lerle katmanlamak için kullanışlıdır. Media tüm medya türleri için ortak alanları ve metotları tutar; IPlayable çalma yeteneğini sözleşme olarak ekler.

Uygulama Şarkı sınıfı

Media abstract sınıfına public abstract void Stop(); metodunu ekle. Song sınıfında public override void Stop() gövdesini yaz: Console.WriteLine("Durduruldu");. Main'de bir Song üretip Play ve Stop çağır.

Örnek çözümü göster
Media içine `public abstract void Stop();` ekle. Song içine `public override void Stop() { Console.WriteLine("Durduruldu"); }` ekle. Main içine `Song s = new Song(); s.Play(); s.Stop();` yaz.
Örnek çözüm:
using System;

interface IPlayable
{
    void Play();
}

abstract class Media
{
    public abstract void Stop();
}

class Song : Media, IPlayable
{
    public void Play()
    {
        Console.WriteLine("Çalınıyor");
    }

    public override void Stop()
    {
        Console.WriteLine("Durduruldu");
    }
}

class Program
{
    static void Main()
    {
        Song s = new Song();
        s.Play();
        s.Stop();
    }
}

Kendini test et

  1. Eşleştir: interface vs abstract

    interface
    sözleşme
    abstract sınıf
    kısmi uygulama
    çoklu
    interface
    tek
    abstract sınıf
  2. interface vs abstract ile ilgili hangisi doğrudur?

    • interface alan içerebilir, abstract sınıf içeremez.
    • interface sözleşme için, abstract sınıf ortak davranış için uygundur.
    • Bir sınıf yalnızca bir interface uygulayabilir ama birden çok abstract sınıf miras alabilir.
    • interface ve abstract sınıf aynı şeydir.
    Cevabı göster

    interface sözleşme için, abstract sınıf ortak davranış için uygundur. — Doğru. interface sözleşme, abstract sınıf ortak davranış için uygundur.

  3. Boşluğu doldur: abstract metot

    abstract class Media
    {
        public ____ void Stop();
    }
    Cevabı göster
    abstract class Media
    {
        public abstract void Stop();
    }

Orta seviye bölümündeki tüm dersler