interface vs abstract
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
-
Eşleştir: interface vs abstract
- interface
- sözleşme
- abstract sınıf
- kısmi uygulama
- çoklu
- interface
- tek
- abstract sınıf
-
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.
-
Boşluğu doldur: abstract metot
abstract class Media { public ____ void Stop(); }Cevabı göster
abstract class Media { public abstract void Stop(); }