0Pricing
C# Academy · Ders

virtual/override/sealed ve soyut sınıflar

Sanal yöntemleri, geçersiz kılmayı, geçersiz kılmaları mühürlemeyi ve soyut sınıfları öğrenin; temel tür başvurularının türetilmiş uygulamalara nasıl gönderim yaptığını görün.

virtual/override/sealed ve soyut sınıflar, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 3 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C# Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C# Academy kursu toplamda 3 dersten oluşur.

Kalıtım temelleri

Amaç: Kalıtım yoluyla davranışı yeniden kullanın ve özelleştirin.

  • Temel sınıfta virtual
  • Türetilen sınıfta override
  • Daha fazla değişikliği durdurmak için sealed override
  • abstract sınıf bir sözleşme ve ortak kod tanımlar

virtual ve override

virtual, geçersiz kılmayı etkinleştirir. Bir temel reference üzerinden yapılan çağrılar, türetilen sınıftaki override'ı kullanır (dinamik dağıtım).

using System;

// Base method is virtual so derived classes can customize it
public class Shape
{
  public virtual double Area()
  {
    return 0.0; // default
  }
}

public class Rectangle : Shape
{
  public int Width { get; private set; }
  public int Height { get; private set; }

  public Rectangle(int w, int h)
  {
    Width = w; Height = h;
  }

  public override double Area()
  {
    return Width * Height;
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    Shape s = new Shape();
    Shape r = new Rectangle(3, 4); // base reference
    Console.WriteLine("Shape area = " + s.Area());
    Console.WriteLine("Rectangle area = " + r.Area()); // calls Rectangle.Area()
  }
}

sealed override

Hiyerarşinin belirli bir düzeyinde bir yöntemi kilitlemek için sealed override kullanın.

using System;

public class BaseLogger
{
  public virtual string Prefix()
  {
    return "[LOG]";
  }
}

public class ConsoleLogger : BaseLogger
{
  public sealed override string Prefix()
  {
    return "[CONSOLE]";
  }
}

// Further derived class cannot override Prefix again:
// public class FancyLogger : ConsoleLogger
// {
//   public override string Prefix() { return "[FANCY]"; } // compile error
// }

public class Program
{
  public static void Main(string[] args)
  {
    ConsoleLogger log = new ConsoleLogger();
    Console.WriteLine(log.Prefix() + " Ready");
  }
}

Soyut sınıflar

abstract sınıflar gerekli üyeleri (abstract) tanımlar ve ayrıca ortak kod sağlayabilir.

using System;

// Abstract class: cannot be instantiated; must implement abstract members
public abstract class Animal
{
  public abstract string Speak(); // no body here
  public string Info()
  {
    return "Animal says: " + Speak(); // shared code uses the abstract member
  }
}

public class Dog : Animal
{
  public override string Speak()
  {
    return "Woof";
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    // Animal a = new Animal(); // compile error: abstract
    Animal d = new Dog();
    Console.WriteLine(d.Info()); // calls Dog.Speak()
  }
}

Virtual ve abstract karşılaştırması

Seçin:

  • virtual: türetilen türlerin geçersiz kılabileceği varsayılan bir gövde sağlar.
  • abstract: gövde yoktur; türetilen türler uygulamak zorundadır.
  • sealed override: davranış sabitlendikten sonra daha fazla geçersiz kılmayı durdurur.

Çok biçimli çağrılar

Çok biçimlilik: Bir yöntem temel türü kabul eder ve türetilen örneklerde geçersiz kılınmış üyeleri çağırır.

using System;

public class Notifier
{
  public virtual string Channel() { return "Base"; }
}

public class EmailNotifier : Notifier
{
  public override string Channel() { return "Email"; }
}

public class SmsNotifier : Notifier
{
  public override string Channel() { return "SMS"; }
}

public class Program
{
  // Works with any Notifier (polymorphism)
  static void Send(Notifier n, string msg)
  {
    Console.WriteLine("[" + n.Channel() + "] " + msg);
  }

  public static void Main(string[] args)
  {
    Send(new EmailNotifier(), "Hello");
    Send(new SmsNotifier(), "Hi");
  }
}

virtual, override ve sealed kuralı

Hızlı kontrol: C#'ta virtual, override ve sealed hakkında hangi ifade doğrudur?

Özet

Özet: Temel yöntemleri virtual olarak işaretleyin, türetilen türlerde override kullanın ve davranışı kilitlemek için sealed override kullanın. Uygulamaları zorunlu kılarken ortak kodu paylaşmak için abstract sınıfları kullanın.

Sıkça Sorulan Sorular

“virtual/override/sealed ve soyut sınıflar” dersi ücretsiz mi?

Evet — “virtual/override/sealed ve soyut sınıflar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C# Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C# Academy kursu toplamda 3 dersten oluşur.

“virtual/override/sealed ve soyut sınıflar” dersinde ne öğreneceğim?

Sanal yöntemleri, geçersiz kılmayı, geçersiz kılmaları mühürlemeyi ve soyut sınıfları öğrenin; temel tür başvurularının türetilmiş uygulamalara nasıl gönderim yaptığını görün. C# Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C# Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C# Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 1. dersidir.

“virtual/override/sealed ve soyut sınıflar” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C# Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C# Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. virtual/override/sealed ve soyut sınıflar
  2. Arayüzlere giriş ve birden çok arayüz uygulama
  3. Çok biçimlilik ve dinamik gönderim
← C# Academy Sayfasına Dön