Şimdi Ara

C# Abstract ve Virtual Farkı

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
3
Cevap
0
Favori
2.552
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Aşagıdaki kod Abstract ve virtual farkını ortaya koyuyor; eger Urun sınıfındaki kdvhesaplayı abstract yaparsak cogu urunde %18 olan degeri her yeni urun sınıfından turuyen urunde hesaplatmak zorunda kalıcaktık ama virtual yaparak temel sınıfdakini kullanabildik playerde oldugu gibi.
    Kısaca kesin olarak uzerine yazılmasını istediginiz metodları Abstract olarak işaretleyin istege baglı olanlarıda virtual.



    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace Urun_Virtual_Ornek
    {

    public class Urun
    {

    public double Fiyat { get; set; }
    public string Isim { get; set; }
    public double KdvliFiyat {get;set;}

    public Urun(string ismi, double fiyati)
    {

    Fiyat = fiyati;
    Isim = ismi;

    }


    public virtual double KdvHesabla()
    {

    return KdvliFiyat = Fiyat + Fiyat * 0.18;

    }

    }


    public class Tv : Urun
    {

    public string KacEkran { get; set; }
    public bool Hdvarmi { get; set; }

    public Tv(string kacekran, bool hdvarmi,string isim,double fiyat):base(isim,fiyat)
    {
    KacEkran = kacekran;
    Hdvarmi = hdvarmi;

    }

    public override double KdvHesabla()
    {
    return KdvliFiyat = Fiyat + Fiyat * 0.15;
    }
    }

    public class MuzikSeti : Urun
    {

    public int SesGucu { get; set; }
    public bool Surround { get; set; }

    public MuzikSeti(int SesGucu, bool Surround, string isim, double fiyat) : base(isim, fiyat)
    {
    this.SesGucu = SesGucu;
    this.Surround = Surround;

    }

    public override double KdvHesabla()
    {
    return KdvliFiyat = Fiyat + Fiyat * 0.10;
    }
    }


    public class Player : Urun
    {

    public int SesGucu { get; set; }
    public bool Surround { get; set; }

    public Player(int SesGucu, bool Surround, string isim, double fiyat)
    : base(isim, fiyat)
    {
    this.SesGucu = SesGucu;
    this.Surround = Surround;

    }


    }




    public class EkleHesapla
    {

    public List<Urun> urunliste = new List<Urun>();

    public double TumUrunlerdeKdvliFiyat()
    {
    double toplamfiyat=0;
    foreach (Urun ur in urunliste)
    {

    toplamfiyat += ur.KdvHesabla();

    }
    return toplamfiyat;
    }

    public void urunEkle(Urun yeniurun)
    {
    urunliste.Add(yeniurun);
    }

    }

    class Program
    {

    static void Main(string[] args)
    {

    EkleHesapla eh = new EkleHesapla();

    Tv televizyon = new Tv("21", true, "LG", 800d);
    MuzikSeti muzikseti = new MuzikSeti(35, false, "DIANA", 1000);
    Player player = new Player(15, true, "NextStar", 50);

    eh.urunEkle(televizyon);
    eh.urunEkle(muzikseti);
    eh.urunEkle(player);

    string isimler="";
    foreach(Urun ur in eh.urunliste)
    {
    isimler +=ur.Isim+",";
    }

    Console.Write("Alınan Ürünler {0} ve Toplam Fiyatları {1}",isimler,eh.TumUrunlerdeKdvliFiyat());
    Console.ReadKey();

    }


    }
    }







  • Peki virtual olarak tanimlamazsak metodu override edemiyor muyuz ?
  • override ancak Abstract ve virtual icin gecerli !
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.